青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-2  評論-2  文章-1  trackbacks-0
  2006年7月29日
在CMainFrame類中添加下列成員變量和成員函數(shù)(使用ClassWizard),下面是這些變量和函數(shù)的功能說明:

[被屏蔽廣告]  成員變量:
  BOOL m_bFullScreen; //全屏幕顯示標志
  CRect m_FullScreenWindowRect; //全屏幕顯示窗口Rect
  WINDOWPLACEMENT m_wpPrev; //用于保存正常視圖時的窗口位置信息
  CToolBar * m_wndFullScreenBar; //全屏幕顯示時的浮動工具條

  成員函數(shù):
  void OnMenuFullscreen(); //全屏幕顯示的處理函數(shù)
  void OnGetMinMaxInfo(); //捕獲WM_GETMINMAXINFO消息以便允許你增加窗口大小
  void OnUpdateViewFullScreen(); //更新“全屏幕顯示”菜單的狀態(tài)

  源碼


  void CMainFrame::OnMenuFullscreen()
  {//全屏幕顯示的處理函數(shù)
  RECT rectDesktop;
  WINDOWPLACEMENT wpNew;

  if (m_bFullScreen)
  {//全屏幕顯示模式
  //隱藏工具條和狀態(tài)條
  m_wndStatusBar.ShowWindow(SW_HIDE);
  m_wndToolBar.ShowWindow(SW_HIDE);

  //保存正常視圖時的窗口位置信息以便恢復原來狀態(tài)
  GetWindowPlacement (&m_wpPrev);
  m_wpPrev.length = sizeof m_wpPrev;

  //調(diào)整RECT為新的窗口尺寸
  ::GetWindowRect ( ::GetDesktopWindow(), &rectDesktop );
  ::AdjustWindowRectEx(&rectDesktop, GetStyle(), TRUE, GetExStyle());

  //保存RECT以便OnGetMinMaxInfo()使用
  m_FullScreenWindowRect = rectDesktop;

  wpNew = m_wpPrev;
  wpNew.showCmd = SW_SHOWNORMAL;
  wpNew.rcNormalPosition = rectDesktop;

  //生成新的工具條
  m_wndFullScreenBar=new CToolBar;

  if(!m_wndFullScreenBar->Create(this, CBRS_SIZE_DYNAMIC|CBRS_FLOATING)
  || !m_wndFullScreenBar->LoadToolBar(IDR_FULLSCREEN))
  {
  TRACE0("Failed to create toolbar\n");
  return; // fail to create
  }

posted @ 2006-07-29 21:41 lucal 閱讀(556) | 評論 (1)編輯 收藏
  2006年6月12日

一、STL簡介

STL(Standard Template Library,標準模板庫)是惠普實驗室開發(fā)的一系列軟件的統(tǒng)稱。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普實驗室工作時所開發(fā)出來的。現(xiàn)在雖說它主要出現(xiàn)在C++中,但在被引入C++之前該技術(shù)就已經(jīng)存在了很長的一段時間。

STL的代碼從廣義上講分為三類:algorithm(算法)、container(容器)和iterator(迭代器),幾乎所有的代碼都采用了模板類和模版函數(shù)的方式,這相比于傳統(tǒng)的由函數(shù)和類組成的庫來說提供了更好的代碼重用機會。在C++標準中,STL被組織為下面的13個頭文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。以下筆者就簡單介紹一下STL各個部分的主要特點。

二、算法

大家都能取得的一個共識是函數(shù)庫對數(shù)據(jù)類型的選擇對其可重用性起著至關重要的作用。舉例來說,一個求方根的函數(shù),在使用浮點數(shù)作為其參數(shù)類型的情況下的可重用性肯定比使用整型作為它的參數(shù)類性要高。而C++通過模板的機制允許推遲對某些類型的選擇,直到真正想使用模板或者說對模板進行特化的時候,STL就利用了這一點提供了相當多的有用算法。它是在一個有效的框架中完成這些算法的——你可以將所有的類型劃分為少數(shù)的幾類,然后就可以在模版的參數(shù)中使用一種類型替換掉同一種類中的其他類型。

STL提供了大約100個實現(xiàn)算法的模版函數(shù),比如算法for_each將為指定序列中的每一個元素調(diào)用指定的函數(shù),stable_sort以你所指定的規(guī)則對序列進行穩(wěn)定性排序等等。這樣一來,只要我們熟悉了STL之后,許多代碼可以被大大的化簡,只需要通過調(diào)用一兩個算法模板,就可以完成所需要的功能并大大地提升效率。

算法部分主要由頭文件<algorithm>,<numeric>和<functional>組成。<algorithm>是所有STL頭文件中最大的一個(盡管它很好理解),它是由一大堆模版函數(shù)組成的,可以認為每個函數(shù)在很大程度上都是獨立的,其中常用到的功能范圍涉及到比較、交換、查找、遍歷操作、復制、修改、移除、反轉(zhuǎn)、排序、合并等等。<numeric>體積很小,只包括幾個在序列上面進行簡單數(shù)學運算的模板函數(shù),包括加法和乘法在序列上的一些操作。<functional>中則定義了一些模板類,用以聲明函數(shù)對象。

三、容器

在實際的開發(fā)過程中,數(shù)據(jù)結(jié)構(gòu)本身的重要性不會遜于操作于數(shù)據(jù)結(jié)構(gòu)的算法的重要性,當程序中存在著對時間要求很高的部分時,數(shù)據(jù)結(jié)構(gòu)的選擇就顯得更加重要。

經(jīng)典的數(shù)據(jù)結(jié)構(gòu)數(shù)量有限,但是我們常常重復著一些為了實現(xiàn)向量、鏈表等結(jié)構(gòu)而編寫的代碼,這些代碼都十分相似,只是為了適應不同數(shù)據(jù)的變化而在細節(jié)上有所出入。STL容器就為我們提供了這樣的方便,它允許我們重復利用已有的實現(xiàn)構(gòu)造自己的特定類型下的數(shù)據(jù)結(jié)構(gòu),通過設置一些模版類,STL容器對最常用的數(shù)據(jù)結(jié)構(gòu)提供了支持,這些模板的參數(shù)允許我們指定容器中元素的數(shù)據(jù)類型,可以將我們許多重復而乏味的工作簡化。

容器部分主要由頭文件<vector>,<list>,<deque>,<set>,<map>,<stack>和<queue>組成。對于常用的一些容器和容器適配器(可以看作由其它容器實現(xiàn)的容器),可以通過下表總結(jié)一下它們和相應頭文件的對應關系。

數(shù)據(jù)結(jié)構(gòu) 描述 實現(xiàn)頭文件
向量(vector) 連續(xù)存儲的元素 <vector>
列表(list) 由節(jié)點組成的雙向鏈表,每個結(jié)點包含著一個元素 <list>
雙隊列(deque) 連續(xù)存儲的指向不同元素的指針所組成的數(shù)組 <deque>
集合(set) 由節(jié)點組成的紅黑樹,每個節(jié)點都包含著一個元素,節(jié)點之間以某種作用于元素對的謂詞排列,沒有兩個不同的元素能夠擁有相同的次序 <set>
多重集合(multiset) 允許存在兩個次序相等的元素的集合 <set>
棧(stack) 后進先出的值的排列 <stack>
隊列(queue) 先進先出的執(zhí)的排列 <queue>
優(yōu)先隊列(priority_queue) 元素的次序是由作用于所存儲的值對上的某種謂詞決定的的一種隊列 <queue>
映射(map) 由{鍵,值}對組成的集合,以某種作用于鍵對上的謂詞排列 <map>
多重映射(multimap) 允許鍵對有相等的次序的映射 <map>

四、迭代器

下面要說的迭代器從作用上來說是最基本的部分,可是理解起來比前兩者都要費力一些(至少筆者是這樣)。軟件設計有一個基本原則,所有的問題都可以通過引進一個間接層來簡化,這種簡化在STL中就是用迭代器來完成的。概括來說,迭代器在STL中用來將算法和容器聯(lián)系起來,起著一種黏和劑的作用。幾乎STL提供的所有算法都是通過迭代器存取元素序列進行工作的,每一個容器都定義了其本身所專有的迭代器,用以存取容器中的元素。

迭代器部分主要由頭文件<utility>,<iterator>和<memory>組成。<utility>是一個很小的頭文件,它包括了貫穿使用在STL中的幾個模板的聲明,<iterator>中提供了迭代器使用的許多方法,而對于<memory>的描述則十分的困難,它以不同尋常的方式為容器中的元素分配存儲空間,同時也為某些算法執(zhí)行期間產(chǎn)生的臨時對象提供機制,<memory>中的主要部分是模板類allocator,它負責產(chǎn)生所有容器中的默認分配器。

五、對初學者學習STL的一點建議

對于之前不太了解STL的讀者來說,上面的文字只是十分概括地描述了一下STL的框架,對您理解STL的機制乃至使用STL所起到的幫助微乎甚微,這不光是因為深入STL需要對C++的高級應用有比較全面的了解,更因為STL的三個部分算法、容器和迭代器三部分是互相牽制或者說是緊密結(jié)合的。從概念上講最基礎的部分是迭代器,可是直接學習迭代器會遇到許多抽象枯燥和繁瑣的細節(jié),然而不真正理解迭代器又是無法直接進入另兩部分的學習的(至少對剖析源碼來說是這樣)。可以說,適應STL處理問題的方法是需要花費一定的時間的,但是以此為代價,STL取得了一種十分可貴的獨立性,它通過迭代器能在盡可能少地知道某種數(shù)據(jù)結(jié)構(gòu)的情況下完成對這一結(jié)構(gòu)的運算,所以下決心鉆研STL的朋友們千萬不要被一時的困難擊倒。其實STL運用的模式相對統(tǒng)一,只要適應了它,從一個STL工具到另一個工具,都不會有什么大的變化。

對于STL的使用,也普遍存在著兩種觀點。第一種認為STL的最大作用在于充當經(jīng)典的數(shù)據(jù)結(jié)構(gòu)和算法教材,因為它的源代碼涉及了許多具體實現(xiàn)方面的問題。第二種則認為STL的初衷乃是為了簡化設計,避免重復勞動,提高編程效率,因此應該是“應用至上”的,對于源代碼則不必深究。筆者則認為分析源代碼和應用并不矛盾,通過分析源代碼也能提高我們對其應用的理解,當然根據(jù)具體的目的也可以有不同的側(cè)重。

最后要說的是,STL是ANSI/ISO C++標準的一部分,所以對于一個可以有多種C++實現(xiàn)的過程,首先考慮的應該是STL提供的模板(高效且可移植性好),其次才是各個廠商各自相應的庫(高效但可移植性不好)以及自己去編寫代碼(可移植性好但低效)。

??????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 怒火之袍

?

posted @ 2006-06-12 23:14 lucal 閱讀(671) | 評論 (1)編輯 收藏
僅列出標題  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品在线视频观看| 国产日韩欧美精品| 亚洲一区bb| 亚洲免费精品| 亚洲视频中文| 欧美一级久久久久久久大片| 亚洲欧美综合国产精品一区| 欧美伊人久久| 六月天综合网| 国产精品扒开腿爽爽爽视频| 国产日韩欧美视频在线| 樱桃国产成人精品视频| 日韩视频一区二区三区| 亚洲欧美日韩一区二区三区在线观看| 欧美综合77777色婷婷| 欧美日本成人| 亚洲欧美精品中文字幕在线| 久久成人综合网| 免费不卡中文字幕视频| 欧美日韩亚洲视频一区| 国产女主播一区二区| 亚洲国产精品精华液2区45| 亚洲伊人网站| 欧美大片网址| 亚洲小视频在线观看| 麻豆乱码国产一区二区三区| 国产精品久久国产精品99gif| 国产日本欧美一区二区三区在线| 91久久精品国产91久久性色tv| 亚洲欧美制服中文字幕| 欧美xxxx在线观看| 欧美一级黄色录像| 欧美私人网站| 亚洲美女av网站| 免费成人黄色片| 亚洲欧美精品中文字幕在线| 欧美日韩国产综合视频在线观看| 激情久久综合| 新片速递亚洲合集欧美合集| 亚洲国产精品一区二区第一页| 亚洲桃色在线一区| 欧美精品一区三区| 最近中文字幕日韩精品| 久久精品国产亚洲aⅴ| 在线一区欧美| 欧美日韩日本国产亚洲在线| 亚洲精品国产拍免费91在线| 欧美v亚洲v综合ⅴ国产v| 久久精品五月婷婷| 国产亚洲成av人在线观看导航 | 亚洲人成网站精品片在线观看| 欧美在线观看一二区| 99re成人精品视频| 欧美日本韩国在线| 亚洲免费福利视频| 欧美高清免费| 免费观看成人www动漫视频| 激情久久久久久久| 老司机凹凸av亚洲导航| 欧美一区二区黄| 国产主播一区二区| 久久影音先锋| 久久婷婷av| 亚洲国产日韩欧美| 欧美高清视频免费观看| 狼人天天伊人久久| 在线欧美日韩国产| 欧美韩国日本一区| 欧美精品自拍| 亚洲欧美不卡| 午夜精品在线视频| 欧美一区二区三区视频在线观看| 亚洲激情自拍| 欧美日韩国产成人在线观看| 亚洲午夜高清视频| 亚洲视频一二| 国产在线成人| 欧美激情小视频| 欧美日韩精品二区| 欧美亚洲午夜视频在线观看| 亚洲欧美日本精品| 亚洲国产精品久久久久秋霞蜜臀 | 国内外成人在线视频| 美女被久久久| 欧美日韩在线三区| 欧美在线看片| 久久久之久亚州精品露出| 亚洲韩国青草视频| 中文在线资源观看视频网站免费不卡| 国产精品日韩专区| 老妇喷水一区二区三区| 欧美国产一区在线| 国产日韩一区欧美| 免费久久久一本精品久久区| 欧美精品一线| 久久精品国产清自在天天线| 欧美成人午夜| 欧美在线视频导航| 欧美成人午夜影院| 午夜精品久久久久99热蜜桃导演| 久久久免费精品视频| 国产精品99久久久久久久久久久久 | 久久中文久久字幕| 蜜桃精品一区二区三区| 亚洲欧美日韩精品| 免费中文日韩| 欧美中在线观看| 久久久久久伊人| 亚洲视频一区| 免费久久精品视频| 欧美在线观看网址综合| 欧美日韩国产成人在线观看| 久久综合亚洲社区| 国产精品老女人精品视频| 欧美韩国日本一区| 国产午夜精品久久久久久免费视| 亚洲国产精品99久久久久久久久| 国产精品视频xxx| 日韩亚洲欧美一区二区三区| 激情校园亚洲| 亚洲男人第一av网站| 日韩亚洲欧美一区二区三区| 欧美在线网址| 午夜精品久久久久久久久久久久| 欧美激情1区| 麻豆av一区二区三区| 国产午夜久久久久| 一区二区日韩伦理片| 伊大人香蕉综合8在线视| 亚洲美女视频网| 亚洲乱码国产乱码精品精| 久久国产天堂福利天堂| 久久激情婷婷| 国产一区二区三区四区| 亚洲伊人一本大道中文字幕| 亚洲一级在线| 欧美日韩理论| 中日韩视频在线观看| 亚洲神马久久| 国产精品久线观看视频| 99精品欧美一区二区蜜桃免费| 亚洲美女毛片| 欧美精品一卡| 亚洲精品一区二区三区福利| 日韩午夜剧场| 欧美精品精品一区| 亚洲老司机av| 亚洲一区免费视频| 国产伦精品一区二区三区四区免费| 亚洲视频在线观看一区| 午夜久久久久久久久久一区二区| 国产精品青草久久| 欧美在线视频播放| 免费日韩av| 9l国产精品久久久久麻豆| 欧美日韩一区二区在线| 亚洲综合清纯丝袜自拍| 久久久91精品| 亚洲精品视频在线观看网站| 欧美日韩精品在线视频| 日韩一级黄色片| 欧美一级淫片播放口| 国产一区二区三区免费在线观看| 久久久久一区二区三区| 亚洲黄色视屏| 午夜影院日韩| 在线播放豆国产99亚洲| 欧美不卡一卡二卡免费版| 艳妇臀荡乳欲伦亚洲一区| 欧美一区二区三区在线观看视频| 狠狠噜噜久久| 欧美日韩第一区| 亚洲一区二区三区午夜| 久热精品视频在线| 一区二区三区国产| 国产亚洲毛片在线| 欧美不卡视频一区发布| 亚洲欧美在线x视频| 亚洲国产小视频| 久久久久.com| 亚洲午夜一区| 亚洲福利一区| 国产精品美女久久久久久免费| 久久久精品国产99久久精品芒果| 亚洲人成亚洲人成在线观看| 欧美在线观看一区| 一本色道久久88综合亚洲精品ⅰ| 国产视频观看一区| 欧美四级剧情无删版影片| 久久久综合视频| 午夜精品福利电影| 夜夜嗨一区二区三区| 欧美成人午夜激情视频| 欧美一区二区三区免费观看| 日韩一二三在线视频播| 狠狠色丁香久久综合频道| 欧美午夜a级限制福利片| 免费亚洲电影在线| 欧美大尺度在线| 曰韩精品一区二区|