基本操作:
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;
}
}
}