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>
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>