Vector详解
一、基本用法(pop_back( ),push_back(value))
基本使用方法:
pop_back() 删除vector的最后一个元素
push_back(value) 将value放到vector的最后
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> myvector;
for(int i=1;i<=10;i++)
myvector.push_back(i);
myvector.pop_back();
return 0;
}
二、front(),back(),clear(),empty(),size()
基本用法:
front() 返回对第一个元素的引用
back() 返回对最后一个元素的引用
clear() 清空 vector
empty() 如果为空,返回 true,否则返回 false
size() 返回 vector 中元素的个数
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> myvector;
for(int i=1;i<=10;i++)
myvector.push_back(i);
cout<<"size="<<myvector.size()<<endl;
cout<<"front="<<myvector.front()<<endl;
cout<<"back="<<myvector.back()<<endl;
if(!myvector.empty()){
myvector.clear();
cout<<"clear!"<<endl;
}
cout<<"size="<<myvector.size()<<endl;
return 0;
}
代码运行如下:
三、begin(),end()
begin() 返回指向第一个元素的迭代器(iterator)
end() 返回指向最后一个元素的迭代器
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> myvector;
vector<int>::iterator it;
for(int i=1;i<=10;i++)
myvector.push_back(i);
cout<<"myvector:";
for(it=myvector.begin();it!=myvector.end();it++)
cout<<' '<<*it;
cout<<endl;
return 0;
}
代码运行如下:
四、rbegin(),rend()
rebigin() 返回指向末尾的逆向迭代器
rend() 返回指向开头之前位置的逆向迭代器
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> myvector (5);
vector<int>::reverse_iterator it;
int i=0;
for(it=myvector.rbegin();it!=myvector.rend();it++)
*it=++i;
cout<<"myvector";
for(int i=0;i<myvector.size();i++)
cout<<' '<<myvector[i];
cout<<endl;
return 0;
}
代码运行如下:
五、erase()
erase(loc) 删除 loc 所指元素,并返回下一元素迭代器
erase(start,end) 删除(start,end)元素,并返回最后被删除 元素的下一个迭代器
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> myvector;
for(int i=1;i<=10;i++)
myvector.push_back(i);
cout<<"first";
for(int i=0;i<myvector.size();i++)
cout<<" "<<myvector[i];
cout<<endl;
myvector.erase(myvector.begin()+1);
cout<<"second";
for(int i=0;i<myvector.size();i++)
cout<<" "<<myvector[i];
cout<<endl;
myvector.erase(myvector.begin()+1,myvector.end()-3);
cout<<"3rd";
for(int i=0;i<myvector.size();i++)
cout<<" "<<myvector[i];
cout<<endl;
return 0;
}
代码运行如下:
六、insert()
insert(loc,value) 在 loc 位置插入一个 value 并返回其迭代器
insert(loc,num,value) 在 loc 位置插入 num 个 value
insert(loc,start,end) 在 loc 位置插入[start,end)间的元素插入后元素均后移v
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> myvector(3,100);
vector<int>::iterator it;
cout<<"first";
for(int i=0;i<myvector.size();i++)
cout<<" "<<myvector[i];
cout<<endl;
it=myvector.begin();
myvector.insert(it,200);
cout<<"second";
for(int i=0;i<myvector.size();i++)
cout<<" "<<myvector[i];
cout<<endl;
it=myvector.begin();
myvector.insert(it,2,300);
cout<<"3rd";
for(int i=0;i<myvector.size();i++)
cout<<" "<<myvector[i];
cout<<endl;
vector<int> anthervector(2,400);
myvector.insert(it+2,anthervector.begin(),anthervector.end());
cout<<"4th";
for(int i=0;i<myvector.size();i++)
cout<<" "<<myvector[i];
cout<<endl;
int marray[]={500,501,502};
myvector.insert(myvector.begin(),marray,marray+3);
cout<<"first";
for(int i=0;i<myvector.size();i++)
cout<<" "<<myvector[i];
cout<<endl;
return 0;
}
代码运行如下:
七、其他
erase(unique(begin( ),end( )), end( )); 对 vector 进行排重
erase(remove(begin( ), end( ), value), end( )); 删除 vector 中值为 value 的元素
sort(begin( ), end( ))// 要加 algorithm 对vector进行从小到大排序,可加cmp 函数
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
vector<int> myvector;
for(int i=1;i<=10;i++)
myvector.push_back(i);
myvector.push_back(1);
cout<<"first";
for(int i=0;i<myvector.size();i++)
cout<<" "<<myvector[i];
cout<<endl;
sort(myvector.begin(),myvector.end());
cout<<"second";
for(int i=0;i<myvector.size();i++)
cout<<" "<<myvector[i];
cout<<endl;
myvector.erase(unique(myvector.begin(),myvector.end()),myvector.end());
cout<<"3rd";
for(int i=0;i<myvector.size();i++)
cout<<" "<<myvector[i];
cout<<endl;
myvector.erase(remove(myvector.begin(),myvector.end(),1),myvector.end());
cout<<"4th";
for(int i=0;i<myvector.size();i++)
cout<<" "<<myvector[i];
cout<<endl;
return 0;
}
代码运行如下: