欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:開發(fā)語言 C++之順序容器

柚子快報激活碼778899分享:開發(fā)語言 C++之順序容器

http://yzkb.51969.com/

這篇文章可以幫助大家快速了解C嘎嘎中的順序容器知識,幫助大家更快速輕松的寫代碼

本篇文章只講解了順序容器各種操作的使用,沒有深挖,這篇只是幫助博主來記憶以及隨時查找忘記的內(nèi)容。

目錄

一、順序容器類型

二、順序容器操作

1.容器的定義和初始化操作

2.賦值和swap操作

3.添加元素操作

4.訪問元素操作

5.刪除元素操作

6.改變?nèi)萜鞔笮〔僮?/p>

三、額外的string操作

1.substr操作

2.string搜索的操作

四、總結(jié)

一、順序容器類型

vector可變大小數(shù)組。支持快速隨機(jī)訪問。在尾部之外的位置插入或刪除元素可能很慢。deque雙端隊列。支持快速隨機(jī)訪問。在頭尾位置插入/刪除速度很快。list雙向鏈表。只支持雙向順序訪問。在 list 中任何位置進(jìn)行插入刪除操作速度都很快。forward_list單向鏈表。只支持單項順序訪問。在鏈表任何位置進(jìn)行插入/刪除操作速度都很快。array固定大小數(shù)組。支持快速隨機(jī)訪問。不能添加或刪除元素。string 與 vector 相似的容器,但專門用于保存字符。隨機(jī)訪問快。在尾部插入/刪除速度?

二、順序容器操作

1.容器的定義和初始化操作

C? ?c默認(rèn)構(gòu)造函數(shù)。如果C是一個array,則c中的元素按默認(rèn)方式初始化;否則c為空。 C? ?c1(c2) C? ?c1=c2 c1初始化為c2的拷貝。c1與c2是相同類型(即它們必須是相同的容器類型,且保存的是相同的元素類型;對于array類型,兩者還必須具有相同的大小。 C? ?c{a,b,c...} C? ?c={a,b,c...} c初始化為初始化列表中元素的拷貝。列表中元素的類型必須與C的元素類型相容。對于array類型,類表中元素數(shù)目必須小于等于array的大小,任何遺漏的元素都進(jìn)行值初始化。 C? ?c(b,e)c初始化為迭代器b和e指定范圍中的元素的拷貝。范圍中元素的類型必須與C的元素類型相容。(array不適用)只有順序容器(不包括array)的構(gòu)造 函數(shù)才能接受參數(shù)大小C? ?seq(n)seq包含n個元素,這些元素進(jìn)行了值初始化(string不適用)。C? ?seq(n,t)seq包含n個初始化為 t 的元素。

/*

vector v; //采用模板實現(xiàn)類實現(xiàn),默認(rèn)構(gòu)造函數(shù)

vector(v.begin(), v.end()); //將v[begin(), end())區(qū)間中的元素拷貝給本身

vector(n, elem); //構(gòu)造函數(shù)將n個elem拷貝給本身。

vector(const vector& vec); //拷貝構(gòu)造函數(shù)。

*/

void print(vector& v)

{

for (vector::iterator it = v.begin(); it != v.end(); it++)

{

cout << *it << " ";

}

cout << endl;

}

void test()

{

vector v1; //默認(rèn)構(gòu)造函數(shù)

for (int i = 0; i < 10; i++)

{

v1.push_back(i);

}

print(v1);

vector v2(v1.begin(), v1.end());//通過區(qū)間的方式進(jìn)行構(gòu)造

print(v2);

vector v3(4, 100);

print(v3);

vector v5(v3); //拷貝構(gòu)造方式

print(v5);

}

/*

運(yùn)行結(jié)果

0 1 2 3 4 5 6 7 8 9

0 1 2 3 4 5 6 7 8 9

100 100 100 100

100 100 100 100

*/

2.賦值和swap操作

C? ?c1;????????C? ?c2;????????C? ?seq;???????? swap(c1,c2) c1.swap(c2) 交換c1和c2中的元素。c1與c2必須有相同的類型。swap通常比從c2向c1拷貝元素快得多(元素本身沒有改變,只是交換了兩個容器的內(nèi)部數(shù)據(jù)結(jié)構(gòu))。assgin操作不適用于關(guān)聯(lián)容器和arrayseq.assign(b,e)將seq中的元素替換為迭代器b和e所表示的范圍中的元素。迭代器b和e不能指向seq中的元素。seq.assign(il)將seq中的元素替換為初始化列表il中的元素。seq.assign(b,e)將seq替換為n個值為 t 的元素。

void print(vector& v)

{

for (vector::iterator it = v.begin(); it != v.end(); it++)

{

cout << *it << " ";

}

cout << endl;

}

void test()

{

vector v1; //默認(rèn)構(gòu)造函數(shù)

for (int i = 0; i < 10; i++)

{

v1.push_back(i);

}

print(v1);

vector v2{ 5,2,1,1,3,1,4 };

swap(v1, v2);

print(v1);

vector v3;

v3.assign(v1.begin(), v1.end());

print(v3);

v3.assign(5, 10);

print(v3);

}

/*

運(yùn)行結(jié)果

0 1 2 3 4 5 6 7 8 9

5 2 1 1 3 1 4

5 2 1 1 3 1 4

10 10 10 10 10

*/

3.添加元素操作

這些操作會改變?nèi)萜鞯牡拇笮?;array不支持這些操作forward_list有自己專有版本的insert和emplace;forward_list不支持push_back和emplace_back;vector和string不支持push_front和emplace_front; c.push_back(t) c.emplace_back(args) 在c的尾部創(chuàng)建一個值為t或由args創(chuàng)建的元素。返回void。push_back創(chuàng)建一個局部臨時對象,將其壓入容器,而emplace_back是在內(nèi)存空間中直接創(chuàng)建對象,性能更優(yōu)。 c.push_front(t) c.emplace_front(args) 在c的頭部創(chuàng)建一個值為t或由args創(chuàng)建的元素。返回void。 c.insert(p,t) c.insert(p,args) 在迭代器p指向的元素之前創(chuàng)建一個值為t或由args創(chuàng)建的元素。返回指向新添加的元素的迭代器。c.insert(p,n,t)在迭代器p指向的元素之前插入n個值為t的元素。返回指向新添加的第一個元素的迭代器;若n為0,則返回p。c.insert(p,b,e)將迭代器b和e指定范圍內(nèi)的元素插入到迭代器p指向的元素之前。b和e不能指向c中的元素。返回指向新添加的第一個元素的迭代器;若范圍為空,則返回p。c.insert(p,il)il是一個花括號包圍的元素值列表。將這些給定值插入到迭代器p指向前的元素之前。返回指向新添加的第一個元素的迭代器;若列表為空,則返回p。

4.訪問元素操作

這些操作的返回值類型全部為c內(nèi)元素的類型,如:int,string等。不返回一個迭代器。訪問成員函數(shù)返回的是一個引用。at和下標(biāo)操作只適用于string,vector,deque和array。back不適用于forward_list。c.back()返回c中尾元素的引用。若c為空,函數(shù)行為未定義。c.front()返回c中首元素的引用。若c為空,函數(shù)行為未定義。c[n]返回c中下標(biāo)為n的元素的引用,n是一個無符號整數(shù)。若n>=c.size(),則函數(shù)行為未定義。c.at(n)返回下標(biāo)為n的元素的引用。如果下標(biāo)越界,則拋出一out_of_range異常。

void test()

{

vector v{ 5,2,1,1,3,1,4 };

cout << "最后一個元素為:" << v.back() << endl;

cout << "第一個元素為:" << v.front() << endl;

cout << v.at(3) << endl;

cout << v[3] << endl;

}

/*

最后一個元素為:4

第一個元素為:5

1

1

*/

5.刪除元素操作

forward_list有特殊版本的 erase。forward_list不支持pop_back; vector和string不支持pop_front。c.pop_back()刪除c中尾元素。若c為空,則函數(shù)行為未定義。函數(shù)返回void。c.pop_front()刪除c中首元素。若c為空,則函數(shù)行為未定義。函數(shù)返回 void。c.erase(p)刪除迭代器p所指定的元素,返回一個指向被刪元素之后元素的迭代器,若p指向尾元素,則返回尾后(off-the-end)迭代器。若p是尾后迭代器,則函數(shù)行為未定義。c.erase(b,e)刪除迭代器b和e所指定范圍內(nèi)的元素。返回一個指向最后一個被刪元素之后元素的迭代器,若e本身就是尾后迭代器,則函數(shù)也返回尾后迭代器。c.clear()刪除c中的所有元素。返回void。

刪除元素的成員函數(shù)并不檢查其參數(shù)。在刪除元素之前,必須保證它們是存在的。

6.改變?nèi)萜鞔笮〔僮?/p>

resize不適用于arrayc.resize(n)調(diào)整c的大小為n個元素。若n

三、額外的string操作

1.substr操作

string ss.substr(pos,n)返回一個string,包含s中從pos開始的n個字符的拷貝。pos的默認(rèn)值為0。n的默認(rèn)值為s.size()-pos,即拷貝從pos開始的所有字符。

void test()

{

string s{ "hello world" };

cout << s.substr(0, 5) << endl;//hello

cout << s.substr(6, 11) << endl;//world

}

2.string搜索的操作

搜索操作返回指定字符出現(xiàn)的下標(biāo),如果未找到則返回 npos。s.find(args)查找s中args 第一次出現(xiàn)的位置。s.rfind(args)查找s中args 最后一次出現(xiàn)的位置。s.find_first_of(args )在s中查找args中任何一個字符第一次出現(xiàn)的位置。s.find_last_of(args )在s中查找args中任何一個字符最后一次出現(xiàn)的位置。s.find_first_not_of(args )在s中查找第一個不在args中的字符。s.find_last_not_of(args )在s中查找最后一個不在args中的字符。args 必須是以下形式之一。c,pos從s中位置pos開始查找字符?c。pos 默認(rèn)為 0。s2,pos從s2中位置pos開始查找字符串 s2。pos 默認(rèn)為 0。cp,pos?從s中位置 pos 開始查找指針 cp 指向的以空字符串結(jié)尾的C風(fēng)格字符串。pos 默認(rèn)為 0。cp,pos,n從s中位置 pos 開始查找指針 cp 指向的數(shù)組的前n個字符。pos和n無默認(rèn)值。

//以第一個成員函數(shù)舉例,其他都一樣。

void test()

{

string s{ "hello world" };

const char* cp = "world"; //"world":指針 cp 指向的以空字符串結(jié)尾的C風(fēng)格字符串

cout << s.find('l') << endl; //2

cout << s.find('l', 3) << endl; //3

cout << s.find(cp, 0) << endl; //6

cout << s.find(cp, 3, 2); //6

}

四、總結(jié)

以上就是我們平時做題或者寫項目常用的成員函數(shù)。覺得不錯的請關(guān)注+收藏+點(diǎn)贊歐,剛開始一下子是記不住的,一定要多寫題多用才能徹底記住。

柚子快報激活碼778899分享:開發(fā)語言 C++之順序容器

http://yzkb.51969.com/

相關(guān)文章

評論可見,查看隱藏內(nèi)容
大家都在看:

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19366271.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄