vector被翻译为向量也称作变长数组
1.vector的定义
vector<typename> name;
vector<int> vi;
vector<double> vi;
vector<char> vi;
vector<node> vi;//node可以是结构体
push_back(x) 在vi的元素末尾添加一个元素x
for(int i=1;i<=5;i++){
vi.push_back(i);
}
vi.size() 返回vector中元素的个数
cout<<vi.size()<<endl; //5
empty() 判断是否为空
cout<<vi.empty()<<endl;//0 表示不为空
back() 返回vector里的最后一个元素
front() 返回vector里的第一个元素
//back() 返回vector里的最后一个元素
//1 2 3 4 5
cout<<vi.back()<<endl; //5
//front() 返回vector里的第一个元素
cout<<vi.front()<<endl;//1
vector的遍历
//1. 通过下标方式
for(int i=0;i<vi.size();i++){
//1 2 3 4 5
cout<<vi[i]<<" ";
}
cout<<endl;
//2.通过迭代器的方法 vector<typename>::iterator it可以把它看做类似于指针的东西
//vi[i]和(vi.begin()+i)是等价的
//vi.begin()和vi.end()是左开右闭的end()表示的是尾元素的下一个
//迭代器支持++,--的操作
//1.
vector<int>::iterator it;
for(it=vi.begin();it!=vi.end();it++){
cout<<*it<<" ";
}
cout<<endl;
//2.
it=vi.begin();
for(int i=0;i<vi.size();i++){
cout<<*(it+i)<<" ";
}
cout<<endl;
//3.
for(vector<int>::iterator it=vi.begin();it!=vi.end();it++){
cout<<*it<<" ";
}
pop_back()删除尾元素
vi.pop_back();
for(vector<int>::iterator it=vi.begin();it!=vi.end();it++){
cout<<*it<<" ";//1 2 3 4
}
clear()清空元素
vi.clear();
cout<<vi.size()<<endl;//0
insert()向vector的任意迭代器it处插入一个元素x
vi.insert(vi.begin(),-1);//在vi的开头加入-1
for(vector<int>::iterator it=vi.begin();it!=vi.end();it++){
cout<<*it<<" ";//-1 1 2 3 4
}
cout<<endl;
vi.insert(vi.begin()+vi.size(),5);//在vi的末尾添加5
for(vector<int>::iterator it=vi.begin();it!=vi.end();it++){
cout<<*it<<" ";//-1 1 2 3 4 5
}
erase()删除元素
//erase() 有两种用法一种是删除单个元素另一种是删除一个区间的所有元素
//-1 1 2 3 4 5
//删除一个元素
vi.erase(vi.begin()+4);//删除4
for(vector<int>::iterator it=vi.begin();it!=vi.end();it++){
cout<<*it<<" ";//-1 1 2 3 5
}
cout<<endl;
//删除整个区间
vi.erase(vi.begin(),vi.begin()+3);//左闭右开不包括右边的那个值
for(vector<int>::iterator it=vi.begin();it!=vi.end();it++){
cout<<*it<<" ";//3,5
}
vector和algorithm里面的函数的应用
扫描二维码关注公众号,回复:
12838976 查看本文章
//reverse() 倒置 是在algorithm里面的函数
//12345
reverse(vi.begin(),vi.end());
for(vector<int>::iterator it=vi.begin();it!=vi.end();it++){
cout<<*it<<" ";//5,4,3,2,1
}
cout<<endl;
//sort()排序默认是从小到大排 还可以任意排序后面讲
sort(vi.begin(),vi.end());
for(vector<int>::iterator it=vi.begin();it!=vi.end();it++){
cout<<*it<<" ";//1,2,3,4,5
}