C++常用STL总结(应对CSP、蓝桥杯)

打印 上一主题 下一主题

主题 1491|帖子 1491|积分 4473

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
常用的语法

万能头文件 #include<bits/stdc++.h>
1.哈希表

暂时没用到
2.栈

特点:先辈后出
用法

  1. stack<type>  s;
  2. s.push(); 压栈/进栈
  3. s.pop(); 栈顶元素出栈(无返回值)
  4. s.top(); 返回栈顶元素
  5. s.empty(); 判断栈是否为空,是返回true
  6. s.size(); 返回栈中元素数量
复制代码
3.for(char c : s)

相当于
  1. for(int i =0;i <s.length(); i++ ){
  2.    
  3. }
复制代码
但是会复制s这个字符串,然后进行遍历操纵
在Java中,s是一个数组
4.队列

<queue>
特点:先辈先出/后进后出
  1. # include<queue>
  2. //使用push
  3. queue<string> q;
  4. q.push("Hello World");
  5. q.push("hhh");
  6. //使用size
  7. q.size()   //返回2
  8. //使用front()、back()
  9. q.front() //返回"Hello World!''
  10. q.back() //返回最后一个
  11.    
  12. //pop()弹出
  13. q.pop();
  14. priotiry_queue<int> Q;
复制代码
5.Vector

  1. #include<vector>
  2. vector<int> vec;
  3. int a;
  4. vec.push_back(a);
  5. vec.size();
  6. vec.pop_back();
  7. for(vector<int>::iterator it=obj.begin();it !=obj.end();it++)
  8. {
  9.    cout<<*it<<",";
  10. }
复制代码
6.unordered_map

没有顺序而言,通过键值访问
  1. #include<unordered_map>
  2. unordered_map<string,int> um1;
  3. unordered_mao<string,int> um2={{"张三",2}};
  4. //使用insert和pair插入
  5. um1.insert(pair<string,int>("张三",3));
  6. um1.insert({"里斯",5})   //可省略pair
  7. um1["里斯"]++;    //若没有里斯则创建一个。
  8.    
  9. //通过键值访问
  10. cout<<um1["张三"];
  11. //遍历
  12. for(auto it=Map.begin();it!=Map.end();++it){
  13.    Key=it->first;
  14.    value=it->second;
  15. }
  16. //用first和second
复制代码
7.next_permutation()获取全排列

  1. #include<algorithm>
  2. int a[4] = {1,3,4,5};
  3. sort(a,a+a.size());//升序排序
  4. do{
  5.     for(int i=0;i<a.size();i++){
  6.         cout<< a[i]<<" ";
  7.     }
  8.     cout << endl;
  9. }while(next_permutation(a,a+a.size()));
  10. /*输出如下
  11. 1 2 3 4
  12. 1 2 4 3
  13. 1 3 2 4
  14. 1 3 4 2
  15. 1 4 2 3
  16. 1 4 3 2
  17. 2 1 3 4
  18. 2 1 4 3
  19. 2 3 1 4
  20. 2 3 4 1
  21. 2 4 1 3
  22. 2 4 3 1
  23. 3 1 2 4
  24. 3 1 4 2
  25. 3 2 1 4
  26. 3 2 4 1
  27. 3 4 1 2
  28. 3 4 2 1
  29. 4 1 2 3
  30. 4 1 3 2
  31. 4 2 1 3
  32. 4 2 3 1
  33. 4 3 1 2
  34. 4 3 2 1
  35. */
复制代码
8.String

  1. string s1 = "abc";
  2. string s2 = "def";
  3. cout << s1.length(); //长度
  4. //插入
  5. s.insert(pos,n,ch);
  6. s.insert(pos,str);
  7. //替换
  8. s.replace(p0,n0,n,ch); //删除从p0开始的n0个字符,然后在p0处插入n个字符ch
  9. s.replace(p0,n0,str);  //删除从p0开始的n0个字符,然后在p0处插入字符串str
  10. //添加
  11. s.append(n,ch);
  12. s.append(str);
  13. //赋值
  14. s.assign(n,ch); //将n个ch赋值给s
  15. s.assign(str);
  16. s.assign(str,pos,n);//将str从pos位置开始的n个字符给s
  17.    
  18. //删除
  19. s.erase(pos,n); //从pos开始的n个字符
  20. //剪切
  21. s = s.substr(pos,n);
  22. s = s.substr(pos); //从pos到结束
  23. //比较
  24. s1.compare(s2); //返回1 -1 0
  25. //交换
  26. swap(s1,s2);
  27. swap(s1[0],s2[0]);   //仅交换第一个字符
  28. //反转
  29. reverse(s.begin(),s.end());
  30. //数值转化 (sto)
  31. to_string(val) //将val转化为string
  32. stoi(str,pos,b); //将字符串s从p位置转化为b进制的int
  33. //查找
  34. string str = "The apple thinks apple is delicious";     //长度34
  35. string key = "apple";
  36. s.find(str); //返回str在s中第一次出现的位置
  37. s.find(ch);
  38. s.find(str,pos);
  39. s.rfind();//从后往前找
  40. int pos = str.find(key);   // 4
复制代码
常用stl

  1. //count(iterator beg,iterator end,value);查询出现次数
  2. //可用于vector
  3. int a  = count(vec.begin(),vec.end(),4);
  4. //reverse(iterator beg,iterator end); 反转
  5. //replace(iterator beg,iterator end,oldvalue,newvalue);替换元素
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦见你的名字

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表