1、容器的概念
容器就是一些特定類型對(duì)象的集合。
2磅摹、容器的分類
容器主要分為順序容器和關(guān)聯(lián)容器滋迈。順序容器為程序員提供了控制元素存儲(chǔ)和訪問(wèn)順序的能力,這種順序不依賴于元素的值户誓,而與元素加入容器時(shí)的位置相對(duì)應(yīng)饼灿。關(guān)聯(lián)容器則是根據(jù)關(guān)鍵字的值來(lái)存儲(chǔ)元素。
3帝美、順序容器
重點(diǎn)講述使用最多的vector容器碍彭。
vector 是一個(gè)類模板(class template),要包含相應(yīng)的頭文件#include<vector>悼潭。vector屬于std命名域庇忌,使用全局命名域方式using namespace std;
(1)vector的初始化:
(2)創(chuàng)建vector對(duì)象: vector是模板而非類型,由vector生成的類型必須包含vector中元素的類型舰褪。如:vector<int>?ivec1;? ? //ivec1保存int類型的對(duì)象
(3)vector中的操作:
添加元素
vec.push_back(a) //在數(shù)組的最后添加一個(gè)數(shù)據(jù)a
vec.insert(pos,elem) //在pos位置插入一個(gè)elem拷貝漆枚,傳回新數(shù)據(jù)位置
vec.insert(vec.begin()+i,a);在第i+1個(gè)元素前面插入a;
刪除元素
vec.pop_back() //刪除數(shù)組的最后一個(gè)數(shù)據(jù)
vec.erase(pos) //刪除pos位置的數(shù)據(jù),傳回下一個(gè)數(shù)據(jù)的位置
vec.erase(vec.begin()+2);刪除第3個(gè)元素
vec.erase(vec.begin()+i,vec.end()+j);刪除區(qū)間[i,j-1];區(qū)間從0開(kāi)始
vec.clear() //刪除vec中所有元素抵知,返回void
vec向量的大小
vec.size() //返回容器中實(shí)際數(shù)據(jù)的個(gè)數(shù)。
vec.empty() //判斷vector是否為空软族,里面有數(shù)據(jù)返回false,否則返回true
獲取迭代器
vec.begin() //返回vec的首元素
vec.end() //返回尾元素之后元素的位置刷喜,即最后一個(gè)單元+1的指針
vec.rbegin() //將vector反轉(zhuǎn)后的開(kāi)始指針?lè)祷?其實(shí)就是原來(lái)的end()-1)
vec.rend() //將vector反轉(zhuǎn)構(gòu)的結(jié)束指針?lè)祷?其實(shí)就是原來(lái)的begin-1)
訪問(wèn)vector中的數(shù)據(jù)
第一種方式 vec.at(index) //函數(shù)和[]函數(shù)使用可以說(shuō)是一模一樣. 都是為了訪問(wèn)對(duì)應(yīng)index中存儲(chǔ)的數(shù)據(jù), 如果index大于vector的size. 兩者都是拋出out_of_range的exception.
第二種方式 vector::operator[]?
operator[]主要是為了與C語(yǔ)言進(jìn)行兼容。它可以像C語(yǔ)言數(shù)組一樣操作立砸,由于operator[]容易造成一些錯(cuò)誤掖疮,所有我們很少用它
vector其他成員函數(shù)
vec.assign(beg,end) //將[beg; end)區(qū)間中的數(shù)據(jù)賦值給c。
vec.assign(n,elem) //將n個(gè)elem的拷貝賦值給c颗祝。
vec.back() //傳回最后一個(gè)數(shù)據(jù)浊闪,不檢查這個(gè)數(shù)據(jù)是否存在。
vec.front() //傳回地一個(gè)數(shù)據(jù)螺戳。
vec.swap(b) //交換vec和b中元素
swap(a,b) //和vec.swap(b)一樣
4搁宾、關(guān)聯(lián)容器
重點(diǎn)講述關(guān)聯(lián)容器map。map是c++的一個(gè)標(biāo)準(zhǔn)容器倔幼,它提供了很好的一對(duì)一的關(guān)系盖腿。map容器的元素是一些關(guān)鍵字——值(key-value)對(duì),key和value可以是你想要的任意類型损同,關(guān)鍵字起到了索引的作用翩腐,值則表示與索引相關(guān)的聯(lián)的數(shù)據(jù)。換句話說(shuō)膏燃,就是通過(guò)key可以找到相應(yīng)的value茂卦。
(1)創(chuàng)建map:
map?<key_type,value_type>tempMap;
(2)map初始化:
map tempMap{
{key1,value1},
{key2,value2},
......};
舉例: