蓝桥杯:vector 与 例题:快递分拣

简介: 蓝桥杯:vector 与 例题:快递分拣

基本操作:

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中最后一个元素

遍历操作:

2dbe0cb135fd4a0bb04dc8ccfca4e6cb.png


例题:快递分拣

437c6c0e9cb14bb2b7756c246f744385.png


例题:快递分拣

#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;
    }
  }
}



相关文章
|
存储 算法
蓝桥杯:递归 与 例题:斐波那契数列及优化与应用
蓝桥杯:递归 与 例题:斐波那契数列及优化与应用
87 0
蓝桥杯:递推 例题:数字三角型问题
蓝桥杯:递推 例题:数字三角型问题
77 0
|
移动开发 Shell
蓝桥杯:2020 国赛 例题:天干地支
蓝桥杯:2020 国赛 例题:天干地支
83 0
蓝桥杯:2019 国赛 例题:求值
蓝桥杯:2019 国赛 例题:求值
76 0
蓝桥杯:桶排序 与 例题:算式问题
蓝桥杯:桶排序 与 例题:算式问题
90 0
蓝桥杯:Map 和 例题:弗里的语言
蓝桥杯:Map 和 例题:弗里的语言
66 0
蓝桥杯:队列 Queue 和 例题: CLZ 的银行
蓝桥杯:队列 Queue 和 例题: CLZ 的银行
67 0
|
机器学习/深度学习
蓝桥杯:栈 和 例题 :小邋遢的衣橱
蓝桥杯:栈 和 例题 :小邋遢的衣橱
136 0
蓝桥杯:2021省赛 例题:直线
蓝桥杯:2021省赛 例题:直线
58 0
蓝桥杯:2021省赛 例题:时间显示
蓝桥杯:2021省赛 例题:时间显示
66 0