C++ STL使用总结

  • vector

vector动态数组 .back()返回数组最后一个元素。

  • vector之二维数组

声明:vector<vector<int>> res(M, vector<int>(N, 0)); 

上面的一行声明了一个二维数组M行N列的二维数组,并且初始化为0;

有一个交换的函数reserve(res.begin(), res.end()); //将res行交换 第一行变最后 第二行变倒数第二


  • stack

stack堆栈,没有迭代器,支持push()方法。后进先出,top()返回最顶端的元素,pop()剔除最顶元素


  • deque

deque双端队列,支持迭代器,有push_back()方法,跟vector差不多,比vector多了个pop_front,push_front方法

queue队列,先进先出,不支持迭代器,有push()方法,pop()剔除第一个元素,front()返回第一个元素


  • set

set集合,元素是唯一的,默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差 (set_symmetric_difference) 等一些集合上的操作。因为元素是唯一的,可用来判断,一个数组中是否含有重复元素。

初始化:

const int N = 6;
const char* a[N] = {"isomer", "ephemeral", "prosaic", "nugatory", "artichoke", "serif"};
const char* b[N] = {"flat", "this", "artichoke", "frigate", "prosaic", "isomer"};

set<const char*,ltstr> A(a, a + N);
set<const char*,ltstr> B(b, b + N);

或者 直接insert。 


  • map
    1. 声明:map<int, int> m;
    2. 初始化的时候,统计每个int出现的次数,若含有该key则++,若不含有则新加一个key;
        for(int i=0; i<nums.size(); i++)
                m[nums[i]]++;
    3. 排序(按key或者按value排序):
     typedef pair<int, int> PAIR;  
        struct CmpByValue {  
            bool operator()(const PAIR& lhs, const PAIR& rhs) {  
                return lhs.second > rhs.second;  
            }  
        };

       vector<PAIR> v(m.begin(), m.end());  
       sort(v.begin(), v.end(), CmpByValue()); 
    4. 排序之后,输出前K个key:
        int index = 0;
        while(k--)
             res.push_back(v[index++].first);

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值