1. 程式人生 > >STL容器-序列式容器vector

STL容器-序列式容器vector

1 容器型別:序列式容器
2、容器的初始化與元素的存放
vector<int> vec;//初始化存放int型的向量vec
2.1 從後面壓入元素100
vec.push_back(100);
2.1 從後面彈出元素,並用temp接收
int temp=vec.pop_back();
3、容器的大小和容量
3.1 容器現有元素的數量
vec.size()
3.2 容器可容納元素的數量
vec.capacity()
3.3 容器可容納的最大元素的數量
vec.max_size()
3.4 調整容器的大小
vec.resize();
3.5 調整容量
vec.reserve()
4、vector的成員函式
4.1判斷向量是否為空
vec.empty();
4.2遍歷容器
使用迭代器:
for(vector<int>::iterator it=vec.begin();it!=vec.end();it++)
{
*it
}
使用at()方法:
for(int i=0;i<vec.size();i++)
{
vec.at(i)
}
使用STL演算法for_each();
#include<algorithm>
void function(const int& i)
{
...
}
for_each(vec.begin(),vec.end(),function);
5.元素的訪問方法
返回元素的引用,可以對元素進行修改:
vec.at(1)或者vec[1];
返回元素的值:
vec.front()返回vector第一個元素的值
vec.back()返回vector最後一個元素的值
6.迭代器相關的函式
正向迭代器:vec.begin()/vec.end();
反向迭代器:vec.rbegin()/ve.rend();
7.元素的查詢和搜尋
7.1查詢某個元素
查詢值為1的某個元素
#include<algorithm>
find(vec.begin(),vec.end(),1);
有條件的搜尋某個元素
bool function(const int& i)
{
if(i>5)
return true;
}
find_if(vec.begin(),vec.end(),find_if)
8 元素排序
vector不支援可以排序的成員函式,可通過STL的sort()函式進行排序
#include<algorithm>
預設升序:
sort(vec.begin(),vec.end());
用函式定義降序排序
bool function(const int& a,const int& b)
{
if(a>b)
return true;
return false;
}
sort(vec.begin(),vec.end(),function);
9 插入元素
vec.insert(vec.end(),2);//在vec的尾部插入元素2
10 刪除元素
10.1 使用成員函式:
刪除最後一個元素:vec.pop_back();
刪除指定的元素:vec.erase(vec.begin());
刪除全部元素:vec.clear()
10.2 使用STL演算法庫
#include<algrithm>
remove(vec.begin(),vec.end(),10);//移除vec中值等於10的元素
這裡要注意的是移除元素後,vec的size是不變的,會將原來的尾部部分在移除後的序列進行補充。
如 vector:1,2,3,10,2,8.
移除10後,變成1,2,3,2,8,8
11.vector<bool>
這裡要特別指出的是vector<bool>每個元素所佔的空間為1個bit而非4個位元組。其操作比普通的vector慢很多,優先使用bitset而不是vector<bool>