如果要使用vector,需要头文件#include< vector >
1、vector容器内元素的访问:
①通过下标进行访问:
这种访问和正常的数组类似,只是需要注意的是,需要用push_back将元素放入数组中;
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int >v;
for(int i=0;i<5;i++){
v.push_back(i);
}
for(int i=0;i<5;i++){
cout<<v[i]<<" ";
}
return 0;
}
输出结果:
②通过迭代器的方式进行访问:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int >v;
for(int i=0;i<5;i++){
v.push_back(i);
}
vector<int>::iterator it;
//等价于auto it;
for(it=v.begin();it!=v.end();it++){
cout<<*it<<" ";
}
return 0;
}
输出结果一样,这里循环结束的条件可以是it!=v.end(),也可以是it<v.end(),只有再vector和string试用,在别的比如set是不试用的
2、vector常用的函数解析
①push_back(i)指的是将i放入动态数组中,上述代码已展示,这里就省略了。
②pop_back 有添加就会有删除,这里指的是删除数组末尾的元素,代码展示:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int >v;
for(int i=0;i<5;i++){
v.push_back(i);
}
vector<int>::iterator it;
//等价于auto it;
v.pop_back();
for(it=v.begin();it<v.end();it++){
cout<<*it<<" ";
}
return 0;
}
此时的输出结果:将末尾的4删除了。
③size
这是用来获得vector中的元素个数,返回的是unsigned类型(一般用int不会出错),为了更方便理解,还是一段代码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int >v;
for(int i=0;i<5;i++){
v.push_back(i);
}
vector<int>::iterator it;
//等价于auto it;
v.pop_back();
for(it=v.begin();it<v.end();it++){
cout<<*it<<" ";
}
cout<<endl<<v.size();//一共四个元素
return 0;
}
输出结果:
④clear:
用于清空所有的元素:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int >v;
for(int i=0;i<5;i++){
v.push_back(i);
}
vector<int>::iterator it;
//等价于auto it;
v.pop_back();
for(it=v.begin();it<v.end();it++){
cout<<*it<<" ";
}
cout<<endl<<v.size();
v.clear();//清除数组
cout<<endl<<v.size();//此时输出0
return 0;
}
⑤insert
指的是在特定的位置插入一个元素,这里需要用到迭代器;
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int >v;
for(int i=0;i<5;i++){
v.push_back(i);
}
auto it=v.begin()+2;//定义it指向数组中下标为2的位置
v.insert(it,9);//在该位置将9插入
//等价于v.insert(v.begin()+2,9);
for(int i=0;i<v.size();i++){
cout<<v[i]<<" ";
}
return 0;
}
输出结果:
⑥erase
与set一样,依旧是两种用法,第一种,删除指定位置的元素;
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int >v;
for(int i=0;i<5;i++){
v.push_back(i);
}
v.insert(v.begin()+2,9);
v.erase(v.begin()+3);
for(int i=0;i<v.size();i++){
cout<<v[i]<<" ";
}
return 0;
}
第二种,删除一个区间的元素[first,last)(左闭右开)
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int >v;
for(int i=0;i<5;i++){
v.push_back(i);
}
v.insert(v.begin()+2,9);
v.erase(v.begin()+3,v.begin()+5);//这里是删除从第一个元素开始的第三个到第四个(没有第五个,右区间是开的)
for(int i=0;i<v.size();i++){
cout<<v[i]<<" ";
}
return 0;
}
这里发现,clear函数和erase(begin,end)是一个意思,那有人会问,明明右边是开区间,那么最后一个元素应该没法删除啊?
这里的end指的是最后一个元素地址的下一个地址,所以包含最后一个元素。
如果你觉得有帮助,请点个赞!