竞赛中C++常用STL容器&函数

STL容器

vector 可变数组

int main () {
    cin >> n;

//      类型   变量名 构造函数参数
    vector<int>  ve (n, 0);
    for (int i = 0; i < n; ++i) {
        cin >> ve[i];           //vector用[]即可访问对应元素,与数组相同
    }
    ve.push_back(1);            //.push_back(x)在vector尾部新增一个x
    ve.pop_back();              //.pop_back()删除vector尾部的元素,长度--
    cout << ve.size() << '\n';  //.size()返回vector的长度
    ve.clear();                 //.clear()清空vector,注意清空后长度为0
}

set 有序不重复集合

int main () {
//      类型 变量名
    set<int> st;
    cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> x;
        st.insert(x);               //把元素插入集合
    }
    cout << st.size() << '\n';      //.size()返回set中元素个数
    for (int i : st) {              //可以用for each循环枚举元素
        cout << i << '\n';
    }
    cout << st.count(1) << '\n'; //.count(x)返回set中有多少个x
    st.erase(1);                 //.earse(x)删除set中的x
}

map 按key排序的key不重复的key-value对集合


int main () {
//   key类型  value类型 变量名
    map<int, int>      mp;
    cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> x;
        mp[x]++;                    //map同样支持[]访问对应元素
    }
    cout << mp.size() << '\n';      //.size()返回map中K-V对个数
    cout << mp.count(1) << '\n';    //.count(x)返回map中key为x的K-V对个数(0或1)
    mp.erase(1);                    //.erase(x)删除map中key为x的K-V对

    for (int i = 0; i < n; ++i) {
        cin >> x;

        //这种方法虽然没错但效率较低
        //map在访问不存在的key时
        //会自动插入对应的key-value对,value为0
        //map的操作时间与它的大小成正比
        //所以要避免这样来查询map中是否存在某个key
        if (mp[x]) cout << x << " in map\n";
        else cout << x << " not in map\n";

        //使用.count(x)就不会有上面的问题
        if(mp.count(x))cout << x << " in map\n";
        else cout << x << " not in map\n";
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值