STL中常用的技巧:set检查重复、优先队列排序、string大小写、min三个数取最小、map建立映射、pair应用

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

猜你喜欢

转载自blog.csdn.net/qq_33726635/article/details/106075361