vector称为向量,其实它就是一个不定长数组。它属于序列式容器。而其他的序列式容器有deque , list , queue , priority_queue , stack 。接下来我会详解它们的。
vector可以实现数据结构中的队列、数组和堆栈的所有功能,是不是很6!
vector< T > v;
vector中的元素可以是任意型别T,比如int,double,string等等
vector v; vector v;
vector类对象实现初始化操作可以使用push_back()。
vector v;
v.push_back(1);
v.push_back(2);
vector的对象可以使用reserve()函数预先设置容器的大小
v.reserve(2);
size()和capacity()用来统计容器中元素的数量
size()返回容器中现有的元素数量;capaticy()返回容器中实际能够容纳的元素数量。resize()可以修改容器的大小
vector v;
v.push_back(1);v.push_back(2);
int s = v.size();
int c = v.capacity();
cout<
empty()
vector<int> v;
if(v.empty()) printf("is_empty\n");
else printf("is_not_empty");
v.push_back(1);
if(v.empty()) printf("is_empty\n");
else printf("is_not_empty");
两种方法:1.迭代器 2.类似数组遍历的方式,用循环
vector<int>::iterator it;
for(it = v.begin();it!=v.end();it++)
cout<<*it<for(int i =0;icout<
有at(index) , [index] , front()(返回第一个元素) , back()(返回最后一个元素)
vector<int> v;
v.push_back(1);
v.push_back(2);
cout<0)<1
cout<0]<1
cout<1
cout<2
begin() , end() ; 从第一个到最后一个
rbegin() , rend() ;从最后一个到第一个(逆向)
find()函数
vector<int> v;
v.push_back(2);
vector<int>::iterator it = find(v.begin(),v.end(),2);
if(it==v.end()) cout<<"no"<else cout<<"yes"<
sort()函数,注意别忘了头文件< algorithm >
默认排序(升序):
vector<int> v;
v.push_back(5);v.push_back(4); v.push_back(6);
sort(v.begin(),v.end());
也可以自己重写排序
bool cmp(const int& a,const int& b){
return a>b;
}
sort(v.begin(),v.end(),cmp);//实现降序排列
push_back()可以,还可以使用insert()将对象插入至vector中任意位置,返回值为迭代器。
vector<int> v;
v.push_back(1);
v.push_back(2);
for_each(v.begin(),v.end(),print);//输出1 2
cout<1);
for_each(v.begin(),v.end(),print);//输出-1 1 2
pop_back():删除最后一个元素
erase():删除由迭代器指定的元素,也可删除区间范围的元素
clear():删除所有元素
void print(int &e)
{
cout<" ";
}
-------------------------------------
vector<int> v;
v.push_back(1);
v.push_back(2);
for_each(v.begin(),v.end(),print);//输出1 2 3
v.pop_back();//删除最后一个元素3
for_each(v.begin(),v.end(),print);//输出1 2
v.erase(v.begin());//删除第一个元素1
for_each(v.begin(),v.end(),print);//输出2
v.clear();//清空
for_each(v.begin(),v.end(),print);//什么也不输出
差不多了,关键的操作就整理到这里。