1、检查是否有重复:
set<int> s;
s.insert(2);
if(s.count(2) == 0){...} // s.count()统计个数
2、插入元素自动排序:
priority_queue<int> ans // 最大堆排序
priority_queue<long,vector<long>, greater<long>()> ans; // 最小堆排序
3、string字符串大小写转换:
string s;
transform(s.begin(), s,end(), s.begin(), ::tolower);
tolower必须调用全局空间下的,原因见:transform模板函数调用tolower函数报错原因、解决办法
4、三个数取最大/小:
#include <algorithm>
using namespace std;
int x = min(min(2,3),5);
struct var {
char *name;
int key;
var(char *a,int k):name(a),key(k){}
};
bool comp(const var& l, const var& r) {
return l.key < r.key;
}
int main() {
var v1("var1", 2);
var v2("var2", 3);
cout << std::min(v1, v2,comp).name << endl;
return 0;
5、map建立映射关系
map建立的映射关系内部使用红黑树自动排序;unordered_map建立的映射关系内部使用哈希表不排序。
// 定义一个map对象
map<int, string> mapStudent;
// 第一种 用insert函數插入pair
mapStudent.insert(pair<int, string>(000, "student_zero"));
// 第二种 用insert函数插入value_type数据
mapStudent.insert(map<int, string>::value_type(001, "student_one"));
// 第三种 用"array"方式插入
mapStudent[123] = "student_first";
原文链接:https://blog.csdn.net/sevenjoin/article/details/81943864
6、make_pair应用
函数传参直接使用make_pair
f(std::make_pair(42, 12)); //pass two values as pair
pair应用
// make_pair example
#include <utility> //pair的标准库类型,它定义在头文件utility中
int main () {
// 方式一:
std::pair <int,int> foo;
foo.first = 1; // the type of first is int
foo.second = 2; // the type of second is int
// 方式二:
std::pair <int,int> bar(1,2);
// 方式三:
std::pair <int,int> xxx;
xxx = std::make_pair(10,20);
std::cout << "foo: " << foo.first << ", " << foo.second << '\n';
return 0;
}
7、栈顶元素与队列首部元素提取
stack<int> ans;
ans.push(2);
ans.push(3);
val = ans.top(); //栈用top
queue<int> ans;
ans.push(2);
ans.push(3);
val = ans.front(); // 队列用front