日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ 顺序容器入门

發布時間:2024/4/18 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 顺序容器入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定義一個順序容器

為了定義一個容器對象 ,我們必須先包含相關聯的頭文件, 應該是下列頭文件之一

#include <vector> #include <list> #include <deque> #include <map> #include <set>

容器對象的定義以容器類型的名字開始 ,后面是所包含的元素的實際類型,例如

vector< string > svec; list< int > ilist;

定義了 svec 是一個內含 string 對象的主 vector, 以及 ilist 是一個 int 型對象的空 list。 svec和 ilist 都是空的。為了確認這一點, 我們可以調用 empty()操作符 ,例如:

if ( svec.empty() != true ) ; // 喔, 有錯誤了

插入元素最簡單的方法是 push_back() ,它將元素插入在容器的尾部 。例如:

string text_word; while ( cin >> text_word )svec.push_back( text_word );

每次從標準輸入讀取一個字符串放到 text_word 中, 然后 push_back()再將 text_word 字符串的拷貝插入到 svec 中。 list 和 deque 容器也支持 push_front(), 它把新元素插入在鏈表的前端, 例如 :假設我們有一個 int 型的內置數組如下:

int ia[ 4 ] = { 0, 1, 2, 3 };

用 push_back():

for ( int ix = 0; ix < 4; ++ix )ilist.push_back( ia[ ix ] );

創建序列 0 1 2 3 然而 如果使用 push_front():

for ( int ix = 0; ix < 4; ++ix )ilist.push_front( ia[ ix ] );

則在 ilist 中創建序列 3 2 1 0
另外 ,我們或許希望為容器指定一個顯式的長度, 長度可以是常量, 也可以是非常量表達式:

#include <list> #include <vector> #include <string> extern int get_word_count( string file_name ); const int list_size = 64; list< int > ilist( list_size ); vector< string > svec(get_word_count(string("Chimera")));

注:
如果一個 C++編譯器不支持缺省模板參數, 那么它要求第二個實參指定分配器 (allocator)。 在這樣的編譯器實現下 ,上述兩個定義被聲明如下

list< int > ilist( list_size, - 1 ); vector< string > svec( 24, "pooh" );

allocator 類封裝了分配和刪除動態內存的抽象過程, 它也是標準庫預定義的類. 實際上它使用了 new 和 delete操作符 ,使用這樣的分配器類有兩個目的 :通過把容器與內存分配策略的細節分開, 這可以簡化容器類的實現 ;其次, 程序員有可能實現或者指定其他的內存分配策略, 比如使用共享內存.
如果容器的主要行為是在前端插入元素 則 deque 比 vector 的效率高 所以我們應該優先選擇 deque

容器中的每個元素都被初始化為與該類型相關聯的缺省值 。對于整數 :將用缺省值0 初值化所有元素。 對于 string 類 :每個元素都將用 string 的缺省構造函數初始化。

除了用相關聯的初始值來初始化每個元素外 ,我們還可以指定一個值 ,并用它來初始化每個元素。
例如:

list< int > ilist( list_size, - 1 ); vector< string > svec( 24, "pooh" );

除了給出初始長度外 ,我們還可以通過 resize()操作重新設置容器的長度。 例如 ,當我們
寫下面的代碼時:

svec.resize( 2 * svec.size() );

我們將 svec 的長度加了一倍 ,每個新元素都被初始化為 與元素底層類型相關聯的缺
省值 。
如果我們希望把每個新元素初始化為某個其他值, 則可以把該值指定為第二個參
數:

// 將新元素初始化為 piglet svec.resize( 2 * svec.size(), "piglet" );

那么 svec 的原始定義的容量是多少 ?它的初始長度是 24 個元素 。
它的初始容量可能是多少? 對——svec 的容量也是 24 。

一般地, vector 的最小容量是它的當前長度, 當 vector的長度加倍時 ,容量一般也加倍。
我們也可以用一個現有的容器對象 初始化一個新的容器對象 。例如:

vector< string > svec2( svec ); list< int > ilist2( ilist );

每個容器支持一組關系操作符 ,我們可以用來比較兩個容器 。這些關系操作符分別是:
等于 、不等于 、小于 、大于、 小于等于、大于等于
容器的比較是指兩個容器的元素之間成對進行比較 。如果所有元素相等而且兩個容器含有相同數目的元素 ,則兩個容器相等,否則 ,它們不相等。 第一個不相等元素的比較決定了兩個容器的小于或大于關系 。
例如 ,下面是一個程序的輸出 ,它比較了五個 vector:

ivec1: 1 3 5 7 9 12 ivec2: 0 1 1 2 3 5 8 13 ivec3: 1 3 9 ivec4: 1 3 5 7 ivec5: 2 4 // 第一個不相等元素: 1, 0 // ivec1 大于 ivec2 ivec1 < ivec2 // flase ivec2 < ivec1 // true // 第一個不相等元素: 5, 9 ivec1 < ivec3 // true // 所有元素相等, 但是, ivec4 的元素少 // 所以 ivec4 小于 ivec1 ivec1 < ivec4 // false // 第一個不相等元素: 1, 2 ivec1 < ivec5 // true ivec1 == ivec1 // true ivec1 == ivec4 // false ivec1 != ivec4 // true ivec1 > ivec2 // true ivec3 > ivec1 // true ivec5 > ivec2 // true

我們能夠定義的容器的類型有三個限制 。實際上, 它們只適用于用戶定義的類類型

  • 元素類型必須支持等于操作符
  • 元素類型必須支持小于操作符 ,前面討論的所有關系操作符都用這兩個操作符來實現
  • 元素類型必須支持一個缺省值 ,對于類類型 ,即指缺省構造函數
    所有預定義數據類型 ,包括指針 ,都滿足這些限制。 C++標準庫給出的所有類類型也一樣

總結

以上是生活随笔為你收集整理的C++ 顺序容器入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www国产成人 | 蜜桃9999 | 少妇熟女视频一区二区三区 | 91最新地址永久入口 | 欧美日韩在线综合 | 操亚洲女人 | 欧日韩在线观看 | 日日噜噜噜噜人人爽亚洲精品 | 欧美成人乱码一区二区三区 | 法国空姐电影在线观看 | 黄色国产在线观看 | 美女扒开腿让男生桶 | 国产婷婷综合 | 1级性生活片 | 亚洲风情亚aⅴ在线发布 | 日韩精品一区二 | 日韩亚州| 欧美性在线观看 | 性视频欧美 | 男人天堂视频网站 | 欲涩漫入口免费网站 | 精品乱码一区二区三区四区 | 伊人国产在线视频 | 久久波多野结衣 | 麻豆免费在线观看 | 亚洲依依 | 免费观看日批视频 | 中文字幕一级片 | 羞辱狗奴的句子有哪些 | 中国1级毛片 | 国产欧美激情在线观看 | 亚洲最新av网站 | 四虎国产成人精品免费一女五男 | 91爱啪啪| 欧美一区二区三区四区五区 | 国产精品一区在线免费观看 | 中文字幕在线观看视频网站 | 茄子视频懂你更多在线观看 | 精精国产 | 国产手机在线视频 | 一区二区三区在线电影 | 久久99国产精品久久99 | 邻家有女4完整版电影观看 欧美偷拍另类 | 亚洲区免费 | 美国性生活大片 | 来吧亚洲综合网 | 亚洲aaa级 | 亚洲精品国产精品乱码不66 | 国产传媒欧美日韩 | av免费观| 3d动漫精品啪啪一区二区免费 | 91免费播放 | 精品中文字幕一区 | 黄色激情视频在线观看 | 精品国产一区二区三区久久久久久 | 久久五月视频 | 亚洲av永久一区二区三区蜜桃 | 少妇一边呻吟一边说使劲视频 | 欧美性猛交xxxx乱大交蜜桃 | 亚洲视频在线免费播放 | 三级网站在线 | 日本熟妇一区二区 | 白嫩少妇激情无码 | 在线观看亚洲 | 泽村玲子av | 黄色一级在线观看 | 小婕子伦流澡到高潮h | 国产在线观看av | 爱蜜臀av | 欧美两根一起进3p做受视频 | av成人动漫 | 欧美美女一区二区三区 | 不卡视频国产 | 日日干夜 | 欧美日韩一区二区三区在线观看 | 两个小y头稚嫩紧窄h文 | 激情网五月 | 伦理欧美 | 在线 色 | 在线一二三区 | 国产精品女教师 | 玖玖玖精品| 天堂av片 | 男女做爰真人视频直播 | 久久99久久98精品免观看软件 | 久久综合久色欧美综合狠狠 | 国产精品久久亚洲 | 中文字幕亚洲欧美日韩 | 欧美精品色婷婷五月综合 | zzjj国产精品一区二区 | 亚洲AV永久无码国产精品国产 | 午夜激情在线 | 东北少妇高潮抽搐 | 欧美成年人 | 在线观看不卡的av | 日韩三区四区 | 亚洲国产中文字幕 | 欧美日韩xxxx | 欧美一区高清 |