C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法
每次忘记都去查,真难啊
1 /* 2 C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法 3 */ 4 5 /* 6 vector常用用法 7 */ 8 //头文件 9 #include<vector> 10 11 //常用的初始化方法 12 vector<int> v; //直接定义一个整型元素的向量 且未声明长度,其中int的位置可以换成别的数据类型或者结构体等 13 vector<int> v(10); //定义了10个整型元素的向量,其中每一个数都没有初值 14 vector<int> v(10, 5); //定义了10个整型元素的向量,并且为每个元素赋初值5 15 16 //常用的操作 17 v.back(); //返回最后一个元素 18 v.front(); //返回第一个元素 19 v.clear(); //清空v中的元素 20 v.empty(); //判断v是否为空,空则返回true,否则false 21 v.push_back(5); //在最后的一个元素后插入5 22 v.size(); //返回v中的元素的个数 23 24 sort(v.begin(), v.end(), cmp); //sort排序,其中cmp部分与结构体等数据类型自定义排序时cmp相同用法 25 26 for(int i = 0; i < v.size(); i++){ //遍历 27 printf("%d\n", v[i]); 28 } 29 30 /* 31 map常用用法 32 */ 33 //头文件 34 #include<map> 35 36 //常用操作 37 map<int, int> m; //初始化 38 m[1] = 5; //以数组形式插入值 39 m[2] = 6; 40 m[1]++; //可以参与运算 41 m[2] += 2; 42 cout<<m[1]<<endl; 43 cout<<m[2]<<endl; 44 45 /* 46 set常用用法 set中的元素自动从小到大排序,且合并重复元素 47 */ 48 //头文件 49 #include<set> 50 51 //常用操作 52 set<int>s; //定义 53 s.insert(x); //插入数值 54 s.clear(); //删除set容器中的所有的元素 55 s.empty(); //判断set容器是否为空 56 57 set<int>::iterator it; //遍历 58 for(it = s.begin(); it != s.end(); it++) 59 { 60 printf("%d\n", *it); 61 } 62 63 //s.end()没有值 64 cout<<"s.begin() "<<*s.begin()<<endl; 65 //lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器 66 cout<<"lower_buond 3 "<<*s.lower_bound(3)<<endl; 67 //upper_bound()--返回大于某个值元素的迭代器 68 cout<<"upper_bound 3 "<<*s.upper_bound(3)<<endl; 69 //find()--返回一个指向被查找到元素的迭代器 70 cout<<"find(3) "<<*s.find(3)<<endl; 71 cout<<"s.size() "<<s.size()<<endl; 72 73 /* 74 queue常用用法 75 */ 76 //头文件 77 #include<queue> 78 79 //常用操作对于普通队列来说 80 queue<int> q; //定义一个队列 81 q.front(); //获取队首元素 82 q.pop(); //删除队首元素 83 q.empty(); //判断队列是否为空 84 q.push(5); //向队列中加入元素 85 86 //priority_queue 87 priority_queue<int> q; //定义一个优先队列 88 q.top(); //获取队列中最大元素(首个) 89 q.pop(); //删除最大元素(队首) 90 q.push(x); //向队列中加入元素 91 q.empty(); //判断优先队列是否为空 92 93 //对于结构体而言,需要重载小于号(优先队列按照从大到小排序) 94 priority_queue<Node> q; 95 96 struct Node{ 97 int a, b; 98 bool operator < (const Node & x) const 99 { 100 return a > x.a; 101 } 102 }; 103 104 /* 105 stack常用用法 106 */ 107 //头文件 108 #include<stack> 109 110 //常用操作 111 stack<int> s; //定义一个栈 112 s.pop(); //删除栈顶元素 113 s.top(); //获取栈顶元素 114 s.empty(); //判断栈是否为空 115 s.push(5); //向栈中压入5
如果有任何意见请在评论区积极留言