C++ STL汇总

C++ STL汇总,第1张

   1 vector(变长数组)

初始化:

vector a(大小,初值) 括号内均可忽略

函数用法:

a.size()    O(1) 时间求出元素个数

a.empty()    O(1)时间判断vector是否为空,若空返回true,非空返回false

a.clear()   清空vector

a.front()/a.back()   返回vector中的第一个数(最后一个数)

a.push_back(int x)/a.pop_back() 插入最后一个数/删除最后一个数

a.begin()/a.end() 返回a第一个迭代器/返回a最后一个迭代器的下一个

[ ]支持随机存址

支持比较运算(用字典序比较) 例:4个3小于3个4

遍历方法:

#include
#include
using namespace std;
int main()
{
    vector a;
    for(int i=1;i<=10;i++) a.push_back(i);

    for(int i=0;i::iterator it=a.begin();it!=a.end();it++) cout << *it << ' ';
    cout << endl;
    for(auto x : a) cout << x << ' ';
    cout << endl;
    system("pause");
    return 0;
}

2 string(字符串)

string a;

a.size()//a.length()

a.empty()

a.clear()

可以直接用+法. 例: a=“abc”,a+="def",a+='g'  >> a="abcdefg"

a.substr(子段起始索引,子段长度) 返回子段。当子段长度省略或者超出最大范围时 返回从起始位置开始到字符串末尾的全部字符.

a.c_str() 返回存储a的起始地址

3 queue(队列)

queue q;

q.size()

q.empty()

无q.clear() 若想清空 直接q=queue()

q.push(int x) 从队尾插入x

q.front()/q.back()  返回队头元素/队尾元素

q.pop() 删除队头元素

4 priority_queue(优先队列)(堆) 默认是大根堆

初始化成小根堆 priority_queue(int,vector,greater> heap;

heap.top() 访问堆顶元素(也就是优先级最高的元素)

heap.push(int x) 向堆中插入元素

heap.pop() d出堆顶元素(也就是优先级最高的元素)

5.stack(栈)

stack stk

stk.push(int x) 向栈顶插入元素

stk.pop() 删除栈顶元素

stk.top() 访问栈顶元素

stk.size()

stk.empty()

6 deque(双端队列)

deque d;

d.size()

d.clear()

d.empty()

d.front()

d.back()

d.push_back()/d.pop_back() 从队尾插入/d出

d.push_front()/d.pop_front() 从队首插入/d出

d.begin()/d.end() 

[]

7 set/multiset (集合)增删改查为O(logn)

set会进行 自动去重+排序

multiset里可以有重复元素

set s;

multiset ms;

s.size()

s.clear()

s.empty()

s.insert() O(logn)

s.count(int x) 返回元素个数(set中要么0要么1) multiset(可以多种情况) (可用于检查元素是否存在,代替find()函数)

s.erase( )

①输入为一个数 删除所有这个数

②输入为一个迭代器 删除这个迭代器

s不支持[]

lower_bound/upper_bound(用二分机制,必须用于已排好序的容器)

lower_bound(起点迭代器,终点迭代器,数值x) 返回大于等于x的第一个数的迭代器

upper_bound(起点迭代器,终点迭代器,数值x) 返回大于x的第一个数的迭代器

对于数组而言:

大于x的第一个数的下标就是 lower_bound(a,a+n,x)-a

8 map/multimap   增删改查为O(logn) 用key自动排序

map m;

multimap可以有重复的key,且不支持[]

m.size()

m.empty()

m.begin()/end()

m.clear()

m.insert(pair类型的key-value)
m.erase(pair类型或者迭代器)

m[key] - value O(logn)时间增改查 // multimap不支持

9 unordered_map /unordered_set

增删改查为O(1) 但无序

10

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/3002377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-27
下一篇 2022-09-27

发表评论

登录后才能评论

评论列表(0条)

保存