7.STL

1.vector

  1. 定义一个长度为10的数组 vector<int> a(10)
  2. 定义一个长度为10的数组并将其每个值都初始化为3 vector<int> a(10,3)
  3. a.size()返回该vector数组中元素的个数
  4. a.empty()返回该vector是否为空,为空返回true,不为空返回false
  5. a.clear()将数组清空
  6. a.front() / a.back()返回数组的第一个数 / 最后一个数
  7. a.push_back() / a.pop_back()在数组的最后插入一个数 / 将数组的最后一个属弹出
  8. 迭代器a.begin() / a.end()(可看作为指针,begin为第一个数,end为最后一个的下一个数,前闭后开)
  9. 支持比较运算,按照字典序来进行比较
  10. 遍历:(注意使用迭代器时要用 * 解除限制)
	for (int i = 0; i < a.size(); i++) {
		cout << a[i] << ' ';
	}

	for (vector<int>::iterator it = a.begin(); it != a.end(); it++) {
		cout << *it << ' ';
	}
	
	for (auto x : a) {
		cout << x << ' ';
	}

2.pair<int,string> p

  1. p.first() / p.second返回序列对的第一个值 / 第二个值
  2. 支持比较运算(按照字典序,以first为第一关键字,以second为第二关键字)
  3. 构造序列对时可用p = make_pair(10,"wyh"p = {20,"abc"}
  4. 若有两个以上的序列时可用pair的叠加pair<int,pair<int,string>>

3.string

  1. s.size()
  2. s.empty()
  3. s.clear()
  4. 将字符串的叠加时可用 +=
  5. a.substr(m,n)返回a字符串中下标从m开始长度为n的字符段,若无第二个参数则直接到字符串的最后
  6. a.c_str()将C++的string转化为C的字符串数组,c_str()生成一个const char *指针,指向字符串的首地址。

4.queue 队列

只允许在表的前端(front)进行删除操作,而在表的后端(back)进行插入,队尾插入,队头弹出

  1. q.size()
  2. q.empty()
  3. 无clear()函数,若要清空则直接将队列重新构造为一个空队列即可q = queue<int>()
  4. q.push()向队尾插入
  5. q.front()返回队头元素
  6. q.back()返回队尾元素
  7. q.pop()弹出队头元素

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

  1. q.push()向堆中插入一个元素
  2. q.top()返回堆顶元素
  3. q.pop()弹出堆顶元素
  4. 无clear函数
  5. 定义大根堆(默认):priority_queue<int> heap
    定义小根堆:priority_queue<int ,vector<int>, greater<int>>

5.stack

  1. s.size()
  2. s.empty()
  3. s.push()向栈顶插入一个元素
  4. s.top()返回栈顶元素
  5. s.pop()弹出栈顶元素
  6. 无clear()

6.deque,双端队列

  1. q.size()
  2. q.empty()
  3. q.clear()
  4. q.front() / q.back() 返回第一位元素 / 返回最后一位元素
  5. q.push_back() / q.pop_back() 向队尾插入一个元素 / 弹出队尾元素
  6. q.push_front() / q.pop_front() 向对首插入一个元素 / 弹出队首元素
  7. begin() / end() 迭代器

7.set / muitiset // map / multimap /

  1. size()
  2. empty()
  3. clear()
  4. begin() / end() 支持 ++ / - - 返回前驱和后继,即前面一个数和后面一个数

set / multiset

  1. s.insert() 插入一个数
  2. s.find() 查找一个数
  3. s.count() 返回某一个数的个数
  4. s.erase()
    1. 输入是一个数时,删除所有x
    2. 输入是一个迭代器时,删除这个迭代器
  5. lower_bound(x) 返回大于等于x的最小的数的迭代器
    upper_bound(x) 返回大于x的最小的数的迭代器

map / multimap

  1. m.insert() 插入的数是一个pair
  2. m.erase() 输入的参数是pair或迭代器
  3. m.find()如果存在所查找的数则返回其对应的迭代器,若不存在则返回m.end()
    所以在使用find函数时,后面经常配套使用一个 if 判断语句判断其是否为 m.end(),然后在对其进行相关的操作
  4. lower_bound(x) 返回大于等于x的最小的数的迭代器
    upper_bound(x) 返回大于x的最小的数的迭代器

8.unordered _set / unordered_map / unordered_multiset / unordered_multimap

具体用法和上面类似,但由于是unordered无序,所以无 lower_bound() / upper_bound() 函数,也不支持迭代器的++ 和 - -

9.bitset,压位

在创建bitset类型时,< >中写的是个数而非数据类型
bitset模拟的是一个bool类型的数组,但是优化了内存空间
唯一需要注意的是,bitset<>模板类虽然重载了中括号运算符,bs[0]表示的是将该数值转换为二进制时的最末尾元素,而非首位(其意义和数组并不相同)。

  1. bs.any()返回是否至少有一个1
  2. bs.none()返回是否全为0
  3. bs.count()返回1的个数
  4. bs.set()将所有位置为1
    bs.set(k,v)将第k位置为v
  5. bs.reset()将所有位变为0
  6. bs.flip()等价于取反
  7. bs.flip(k)把第k位取反
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值