1. queue和deque的区别
deque是双端队列,queue是正常队列。前者是后者的默认底层实现。
1.1 queue的基操 vs deque的基操
2. map/set
2.1 multimap的一个key找多个value
multimap中可以保存多个key值,介绍一下获取某一key值所有value的方法。这些方法对于multiset也是可以使用的。
- 使用equal_range
- 使用count统计出数量
- 使用lower_bound upper_bound获取起止迭代器,和1类似
参考:每天一点C++——获取multimap某个key的所有value
2.2 multiset 删掉元素时候只想删掉k个相同元素中的一个时
坑:multiset 用erase时候会把元素相同的全部删掉,如果只想删掉一个的话需要:
// tmp.erase(s[l]); // 有多个重复的会全部删掉 auto it = tmp.find(s[l]); tmp.erase(it);
2.3 要在set/multiset中更新一个值
语法知识:不能用set迭代器去改一个值 可以先删掉再加入。
edset.erase(it); edset.insert(a[i].second); // *it = a[i].second; 错误! //语法知识:不能用set迭代器去改一个值 可以先删掉再加入。
我的AC代码:
3 string
3.1 全部转成大写或小写
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
cin >> str; //注意这里对于中间有空格的单词只会将第一个空格前的单词大写
//getline(cin, str); 可以将一整行的单词大写
for (int i = 0; i < str.size(); i++) //大写
str[i] = toupper(str[i]);
for (int i = 0; i < str.size(); i++) //小写
str[i] = tolower(str[i]);
cout << str << endl;
return 0;
}