1. .定义方式及组成:
#include#includeusing namespace std;vector/数据类型>//容器名字如:vector vec;//定义一个int类型的名为vec的容器vector vec1;vector vec2;int main(){}
.的基本用法
(1).在容器末尾添加元素:
() // ()
#include#includeusing namespace std;vectorvec;int main(){int n,x;cin >> n;while(n--){cin>>x;vec.push_back(x);//插入n个数!//vec.emplace_back(x);}return 0;}
遍历容器内元素的方法:
#include#include#include//迭代器头文件#includeusing namespace std;vectorvec;int main(){int n,x;cin >> n;while(n--){cin>>x;vec.push_back(x);}// 法1:(迭代器)std::vector::iterator it;//针对vector定义一个名为it的迭代器for(it =vec.begin();it!=vec.end();it++){cout << (*it) <<"\n";}/*逆序输出:for(auto it=vec.rbegin();it!=rend();it++){cout << (*it) <<"\n";}*//* 法2:(数组)for(int i=0;i=0;i--){cout << vec[i] << "\n";}*//* 法3:(auto : 自动识别数据类型)for(auto j : vec){cout << j << "\n";}*/return 0;}
(3)排序与翻转:
#include#include#include//迭代器头文件#includeusing namespace std;vectorvec;int main(){int n,x;cin >> n;while(n--){cin>>x;vec.push_back(x);}//排序:sort(vec.begin(),vec.end());for(auto j : vec){cout << j << "\n";}return 0;}
测试结果:
翻转:
#include#include#include//迭代器头文件#includeusing namespace std;vectorvec;int main(){int n,x;cin >> n;while(n--){cin>>x;vec.push_back(x);}//排序:sort(vec.begin(),vec.end());//翻转:reverse(vec.begin(),vec.end());for(auto j : vec){cout << j << "\n";}return 0;}
测试1:
#include#include#include//迭代器头文件#includeusing namespace std;vectorvec;int main(){int n,x;cin >> n;while(n--){cin>>x;vec.push_back(x);}//排序:sort(vec.begin(),vec.end());//翻转:reverse(vec.end(),vec.begin());for(auto j : vec){cout << j << "\n";}return 0;}
【STL容器语法】测试2:
(4)清空:
#includeusing namespace std;vector vec[100];int main(){/* 一维vector的清空方式:vec.clear();二维vector的清空方式:把每一层都清空for(int i=1;i<=n;i++)vec[i].clear();*/return 0;}
(5)删除指定元素:用指针删除:
#includeusing namespace std;vector vec;int main(){int n;cin >> n;int x;for(int i=0;i> x;vec.push_back(x);}for(auto it=vec.begin();it!=vec.end();){if(*it==4) it=vec.erase(it);else it++;//更新指针位置,否则会中断,无法输出任何内容.}for(auto j: vec){cout << j << "\n";}return 0;}
测试:
(6)删除的最后一个元素:
#includeusing namespace std;vector vec;int main(){int n;cin >> n;int x;for(int i=0;i> x;vec.push_back(x);}vec.pop_back();//删除容器末尾元素for(auto j: vec){cout << j << "\n";}return 0;}
测试:
(7)返回首尾元素:
#includeusing namespace std;vector vec;int main(){int n;cin >> n;int x;for(int i=0;i> x;vec.push_back(x);}if(vec.size()){cout << vec.front();//返回第一个元素}cout<<"\n";if(vec.size()){cout << vec.back();//返回最后一个元素}return 0;}