C++刷题精髓在STL编程,还有一些函数。下面我就总结一下本人在刷题过程中,每逢遇见总要百度的内容………………(大概率因为本人刷题太少了)

1. map

map<string, int> m;

map<int, int> m;

key-value一一对应,一个key只能有一个value,且m按key自动排序

begin()          返回指向map头部的迭代器
clear()         删除所有元素
count()          返回指定元素出现的次数
empty()          如果map为空则返回true
end()            返回指向map末尾的迭代器
erase()          删除一个元素
find()           查找一个元素
insert()         插入元素
size()           返回map中元素的个数

迭代:

map<int, int> ::iterator it;
for(it = m.begin();it != m.end();it++)
{
cout << it->first << it->second << endl;
}

2. vector

vector<int> vec;

尾部插入数字:vec.push_back(a);

使用下标访问元素,cout<<vec[0]<<endl;

插入元素:    vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;

删除元素:    vec.erase(vec.begin()+2);删除第3个元素

vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始

向量大小:vec.size();

清空:vec.clear();

迭代:

vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<<*it<<endl;

3. set

set<int> s;

begin()--返回指向第一个元素的迭代器

clear()--清除所有元素

count()--返回某个值元素的个数

empty()--如果集合为空,返回true

end()--返回指向最后一个元素的迭代器

erase()--删除集合中的元素

find()--返回一个指向被查找到元素的迭代器

insert()--在集合中插入元素

size()--集合中元素的数目

swap()--交换两个集合变量

迭代:

set<int>::iterator it;
for(it=s.begin();it!=s.end();it++)
cout<<*it<<endl;

4. queue

queue<int> q;

入队,q.push(x); 将x 接到队列的末端。
出队,q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问队首元素,q.front(),即最早被压入队列的元素。
访问队尾元素,q.back(),即最后被压入队列的元素。
判断队列空,q.empty(),当队列空时,返回true。
访问队列中的元素个数,q.size()

while(!q.empty())
{
q.front();
q.pop();
}

5. priority_queue

https://blog.csdn.net/weixin_36888577/article/details/79937886
priority_queue <int,vector<int>,greater<int> > q;      //升序队列
priority_queue <int,vector<int>,less<int> >q;           //降序队列
greater和less是std实现的两个仿函数(就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了)

和队列基本操作相同:

  • top 访问队头元素
  • empty 队列是否为空
  • size 返回队列内元素个数
  • push 插入元素到队尾 (并排序)
  • emplace 原地构造一个元素并插入队列
  • pop 弹出队头元素
  • swap 交换内容

6. stack

stack<int> s1;
stack<string> s2;
入栈,s.push(x);
出栈,s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素。
访问栈顶,s.top()
判断栈空,s.empty(),当栈空时,返回true。
访问栈中的元素个数,s.size()。

while(!s.empty())
{
s.top();
s.pop();
}

C++ 编程技巧锦集(一)的更多相关文章

  1. django 技巧锦集

    1. 如何将model对象转化成一个dict,这在restful api的设计上会有用. 答案:使用django.forms.models的model_to_dict方法,demo如下: from d ...

  2. linux操作小技巧锦集

    0.常用Linux命令 查看端口被占用情况: 1.netstat -tunlp|grep 端口号 2.lsof -i:端口号 tar 压缩文件命令: -c:建立一个压缩文件的参数指令(create 的 ...

  3. Docker实用debug调试技巧锦集

    阅读约 20 分钟 『重用』容器名 但我们在编写/调试Dockerfile的时候我们经常会重复之前的command,比如这种docker run --name jstorm-zookeeper zoo ...

  4. 15个提高编程技巧的JavaScript工具

    原文地址:http://www.imooc.com/wenda/detail/243523 JavaScript脚本库是一个预先用JavaScript语言写好的库,它方便了我们开发基于JavaScri ...

  5. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  6. BASH的保护性编程技巧

    BASH的保护性编程技巧   shell常用逻辑判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目 ...

  7. iOS--碎片知识锦集

    知识锦集day01 1.UIView的两个方法: sizeThatFits和 sizeToFit 官方文档上说: - (CGSize)sizeThatFits:(CGSize)size;     // ...

  8. js异步编程技巧一

    异步回调是js的一大特性,理解好用好这个特性可以写出很高质量的代码.分享一些实际用的一些异步编程技巧. 1.我们有些应用环境是需要等待两个http请求或IO操作返回后进行后续逻辑的处理.而这种情况使用 ...

  9. 【收藏】Java多线程/并发编程大合集

    (一).[Java并发编程]并发编程大合集-兰亭风雨    [Java并发编程]实现多线程的两种方法    [Java并发编程]线程的中断    [Java并发编程]正确挂起.恢复.终止线程    [ ...

随机推荐

  1. 【Git】生成Patch和使用Patch

    1.生成Patch(俗称快照) 先来看看repo manifest 的用法 <1>cd /工作目录/项目目录/.repo/manifests <2>repo manifest ...

  2. RSA加密解密及RSA签名和验证

    原文:RSA加密解密及RSA签名和验证 1.RSA加密解密: (1)获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥 (2)加密 (3)解密2.RSA签名和验证 (1)获取密钥,这里是 ...

  3. Ubuntu服务器搭建

    Ubuntu16 搭建Git 服务器 - 濮成林 - 博客园 https://www.cnblogs.com/charliePU/p/7528226.html Ubuntu 搭建 GitLab 笔记 ...

  4. Android零基础入门第57节:日期选择器DatePicker和时间选择器TimePicker

    原文:Android零基础入门第57节:日期选择器DatePicker和时间选择器TimePicker 在实际开发中,经常会遇见一些时间选择器.日期选择器.数字选择器等需求,那么从本期开始来学习And ...

  5. 2015元旦第一弹——WP8.1应用程序栏(C#后台代码编写)

    //第一次写博文,以后还请各位道友互相关照哈.废话不多说,直接进入正题. 相信大家对于如何在XAML添加应用程序栏应该很清楚,不清楚的话,可以打开新建个Pviot应用 就有系统自带的菜单栏. 本文主要 ...

  6. 深度网络中的Tricks

    数据增强(Data augmentation) 预处理(Pre-processing) 初始化(Initializations) 训练中的Tricks 激活函数(Activation function ...

  7. 一小部分机器学习算法小结: 优化算法、逻辑回归、支持向量机、决策树、集成算法、Word2Vec等

    优化算法 先导知识:泰勒公式 \[ f(x)=\sum_{n=0}^{\infty}\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n \] 一阶泰勒展开: \[ f(x)\approx ...

  8. Java程序员的现代RPC指南(Windows版预编译好的Protoc支持C++,Java,Python三种最常用的语言,Thrift则支持几乎主流的各种语言)

    Java程序员的现代RPC指南 1.前言 1.1 RPC框架简介 最早接触RPC还是初学Java时,直接用Socket API传东西好麻烦.于是发现了JDK直接支持的RMI,然后就用得不亦乐乎,各种大 ...

  9. Qt中加载Libevent静态库(通过reimp和rs两条语句将lib转为a)

    文章来源:http://blog.sina.com.cn/s/blog_731bf4c90102wnpr.html 本文仅是个人经验总结,若有错误欢迎指教! 最近要做一个跨平台的项目,同时也涉及到网络 ...

  10. 说说IEnumerable和yield

    IEnumerable数据类型是我比较喜欢的数据类型,特别是其强类型IEnumerable<T>更获得Linq的支持使得代码看起来更加优雅.整洁. 编写返回值为IEnumerable(或I ...