久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

標(biāo)準(zhǔn)模板類(lèi)(STL)(四),,容器的比較、對(duì)比和總結(jié)

 quandsu 2013-09-04

(三)容器的比較和對(duì)比和總結(jié)

1,、若兩容器長(zhǎng)度相同,、所有元素相等,則兩個(gè)容器就相等,,否則為不等,。若兩容器長(zhǎng)度不同,但較短容器中所有元素都等于較長(zhǎng)容器中對(duì)應(yīng)的元素,,則較短容器小于另一個(gè)容器;若兩個(gè)容器均不是對(duì)方的子序列,,則取決于所比較的第一個(gè)不等的元素。

#include <vector>

#include <iostream>

int main()

{

std::vector<int> v1;

std::vector<int> v2;

v1.push_back (5); 

v1.push_back (1);

v2.push_back (1);

 v2.push_back (2);

v2.push_back (3);

std::cout << (v1 < v2);

   return 0;

}

2,、所有標(biāo)準(zhǔn)庫(kù)容器共有的成員函數(shù),。

相當(dāng)于按詞典順序比較兩個(gè)容器大小的運(yùn)算符:=, < , <= , >  , >=, == , !=

empty : 判斷容器中是否有元素

max_size: 容器中最多能裝多少元素

size:   容器中元素個(gè)數(shù)

swap: 交換兩個(gè)容器的內(nèi)容

3,、只在第一類(lèi)容器中的函數(shù):

begin   返回指向容器中第一個(gè)元素的迭代器

end     返回指向容器中最后一個(gè)元素后面的位置的迭代器

rbegin   返回指向容器中最后一個(gè)元素的迭代器

rend    返回指向容器中第一個(gè)元素前面的位置的迭代器

erase   從容器中刪除一個(gè)或幾個(gè)元素

clear   從容器中刪除所有元素

38、標(biāo)準(zhǔn)模板類(lèi)(STL)(四),,容器的比較,、對(duì)比和總結(jié) - EdwardLewis - 墨涵天地

4、迭代器

    用于指向第一類(lèi)容器中的元素,。有const 和非 const兩種,。

    通過(guò)迭代器可以讀取它指向的元素,通過(guò)非const迭代器還能修改其指向的元素,。迭代器用法和指針類(lèi)似,。

定義一個(gè)容器類(lèi)的迭代器的方法可以是:

容器類(lèi)名::iterator  變量名;

或:容器類(lèi)名::const_iterator 變量名;

訪問(wèn)一個(gè)迭代器指向的元素:迭代器變量名

    迭代器上可以執(zhí)行 ++ 操作以指向容器中的下一個(gè)元素。如果迭代器到達(dá)了容器中的最后一個(gè)元素的后面,,則迭代器變成past-the-end值,。

要使用一個(gè)past-the-end值的迭代器來(lái)訪問(wèn)對(duì)象是非法的,就好像使用NULL或未初始化的指針一樣,。例如:

#include <vector>

#include <iostream>

using namespace std;

int main()  {

vector<int> v; //一個(gè)存放int元素的向量,,一開(kāi)始里面沒(méi)有元素

v.push_back(1);

v.push_back(2); 

v.push_back(3);  

v.push_back(4);

vector<int>::const_iterator i;   //常量迭代器

for( i = v.begin();i != v.end();i ++ ) 

cout << * i << ",";

cout << endl;

vector<int>::reverse_iterator r;  //反向迭代器

for( r = v.rbegin();r != v.rend();r++ ) 

cout << * r << ",";

cout << endl;

vector<int>::iterator j;   //非常量迭代器

for( j = v.begin();j != v.end();j ++ ) 

* j =  100;

for( i = v.begin();i != v.end();i++ ) 

cout << * i << ",";

}

輸出結(jié)果:

1,2,3,4,

4,3,2,1,

100,100,100,100,

不同容器上支持的迭代器功能強(qiáng)弱有所不同。容器的迭代器的功能強(qiáng)弱,,決定了該容器是否支持STL中的某種算法,。

1:只有第一類(lèi)容器能用迭代器遍歷。

2:排序算法需要通過(guò)隨機(jī)迭代器來(lái)訪問(wèn)容器中的元素,,那么有的容器就不支持排序算法,。

5STL中的迭代器

STL 中的迭代器按功能由弱到強(qiáng)分為5種:

   1. 輸入:Input iterators 提供對(duì)數(shù)據(jù)的只讀訪問(wèn),。

   1. 輸出:Output iterators 提供對(duì)數(shù)據(jù)的只寫(xiě)訪問(wèn)

   2. 正向:Forward iterators 提供讀寫(xiě)操作,,并能一次一個(gè)地向前推進(jìn)迭代器。

   3. 雙向:Bidirectional iterators提供讀寫(xiě)操作,,并能一次一個(gè)地向前和向后移動(dòng),。

   4. 隨機(jī)訪問(wèn):Random access iterators提供讀寫(xiě)操作,并能在數(shù)據(jù)中隨機(jī)移動(dòng),。

    編號(hào)大的迭代器擁有編號(hào)小的迭代器的所有功能,,能當(dāng)作編號(hào)小的迭代器使用。

6,、不同迭代器所能進(jìn)行的操作(功能)

所有迭代器: ++p, p ++

輸入迭代器: * p, p = p1, p == p1 , p!= p1

輸出迭代器: * p, p = p1

正向迭代器: 上面全部

雙向迭代器: 上面全部,,--p, p --,

隨機(jī)訪問(wèn)迭代器: 上面全部,以及:

p+= i, p -= i, 

p + i: 返回指向 后面的第i個(gè)元素的迭代器

p - i: 返回指向 前面的第i個(gè)元素的迭代器

p[i]:  p 后面的第i個(gè)元素的引用

p < p1, p <= p1, p > p1, p>= p1

7,、容器所支持的迭代器類(lèi)別

在上面的表中已作了說(shuō)明,,有點(diǎn)亂,現(xiàn)總結(jié)一下如下所示:

容器 

迭代器類(lèi)別

vector

隨機(jī)

deque

隨機(jī)

list

雙向

set/multiset

雙向

map/multimap

雙向

Stack

不支持迭代器

queue

不支持迭代器

priority_queue

不支持迭代器

例如,,vector的迭代器是隨機(jī)迭代器,,所以遍歷 vector 可以有以下幾種做法:

vector<int> v(100);

vector<int>::value_type i; //等效于寫(xiě) int i;(P687)

for(i = 0;i < v.size() ; i ++)

cout << v[i];

vector<int>::const_iterator ii;

for( ii = v.begin(); ii != v.end ();ii ++ )

cout << * ii;

//間隔一個(gè)輸出:

ii = v.begin();

while( ii < v.end()) {

cout << * ii;  

ii = ii + 2; 

}

而 list 的迭代器是雙向迭代器,,所以以下代碼可以:

list<int> v;

list<int>::const_iterator ii;

for( ii = v.begin(); ii != v.end ();ii ++ )

cout << * ii;

以下代碼則不行:

for( ii = v.begin(); ii < v.end ();ii ++ )

cout << * ii;

//雙向迭代器不支持 <

for(int i = 0;i < v.size() ; i ++)

cout << v[i]; //雙向迭代器不支持 []

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多