基本操作:
a.size() //返回实际长度(元素个数),O(1)复杂度 a.empty() //容器为空返回1,否则返回0,O(1)复杂度 a.clear() //把vector清空 a.begin() //返回指向第一个元素的迭代器,*a.begin()与a[0]作用相同 a.end() //越界访问,指向vector尾部,指向第n个元素再往后的边界 a.front() //返回第一个元素的值,等价于*a.begin和a[0] a.back() //返回最后一个元素的值,等价于*--a.end()和a[size()-1] a.push_back(x) //把元素x插入vector尾部 a.pop_back() //删除vector中最后一个元素
遍历操作:
例题:快递分拣
例题:快递分拣
#include<iostream> #include<vector> using namespace std; vector<string> city; vector<string> dig[1000]; //单号对应的城市最多有1000个 //判断城市是否有过单号,有就返回城市位置 int Myfind(string s) { for(int i=0;i<city.size();i++) { if(city[i]==s) return i; } return -1; } int main(){ //操作次数: int n; cin >> n; for(int i = 0; i < n; i++){ string d,c; cin >> d >> c; //输入单号和城市 int flag = Myfind(c); //判断城市是否有过单号 if(flag == -1){ //不曾有过,那就在city中追加城市,并为其对应的dig增加单号 city.push_back(c); dig[city.size()-1].push_back(d); }else{ //曾经有过,那就在城市的对应的dig增加单号 //这里的dig是个二维vector :一维为对应城市位置,二维为单号 dig[flag].push_back(d); } } for(int i = 0; i < city.size(); i++){ cout << city[i] << " " << dig[i].size() << endl; for(int j = 0; j < dig[i].size(); j++){ cout << dig[i][j] << endl; } } }