C++ 编程技巧锦集(一)
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++ 编程技巧锦集(一)的更多相关文章
- django 技巧锦集
1. 如何将model对象转化成一个dict,这在restful api的设计上会有用. 答案:使用django.forms.models的model_to_dict方法,demo如下: from d ...
- linux操作小技巧锦集
0.常用Linux命令 查看端口被占用情况: 1.netstat -tunlp|grep 端口号 2.lsof -i:端口号 tar 压缩文件命令: -c:建立一个压缩文件的参数指令(create 的 ...
- Docker实用debug调试技巧锦集
阅读约 20 分钟 『重用』容器名 但我们在编写/调试Dockerfile的时候我们经常会重复之前的command,比如这种docker run --name jstorm-zookeeper zoo ...
- 15个提高编程技巧的JavaScript工具
原文地址:http://www.imooc.com/wenda/detail/243523 JavaScript脚本库是一个预先用JavaScript语言写好的库,它方便了我们开发基于JavaScri ...
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
- BASH的保护性编程技巧
BASH的保护性编程技巧 shell常用逻辑判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目 ...
- iOS--碎片知识锦集
知识锦集day01 1.UIView的两个方法: sizeThatFits和 sizeToFit 官方文档上说: - (CGSize)sizeThatFits:(CGSize)size; // ...
- js异步编程技巧一
异步回调是js的一大特性,理解好用好这个特性可以写出很高质量的代码.分享一些实际用的一些异步编程技巧. 1.我们有些应用环境是需要等待两个http请求或IO操作返回后进行后续逻辑的处理.而这种情况使用 ...
- 【收藏】Java多线程/并发编程大合集
(一).[Java并发编程]并发编程大合集-兰亭风雨 [Java并发编程]实现多线程的两种方法 [Java并发编程]线程的中断 [Java并发编程]正确挂起.恢复.终止线程 [ ...
随机推荐
- java模拟post请求发送json数据
import com.alibaba.fastjson.JSONObject; import org.apache.http.client.methods.CloseableHttpResponse; ...
- UWP中的消息提示框(二)
在UWP中的消息提示框(一)中介绍了一些常见的需要用户主动去干涉的一些消息提示框,接下来打算聊聊不需要用户主动去干涉的一些消息提示框.效果就是像双击退出的那种提示框. 先说说比较简单的吧,通过系统To ...
- .NET DataTable转换为JSON格式的字符串
在进行数据传递的时候,有时我们需要通过Ajax的方式或者其他的方式传递一个数据列表,可以将DataTable或者其他形式的数据列表转换为JSON的格式,通过Ajax实体的形式进行传递. 比如说: // ...
- 关于DexOpt: not all deps represented
最近在做android BSP 4.2的时候遇到一个BUG,编译user 版本的时候,系统刷进手机里面去,无限循环在开机动画,编译userdebug 刷机进去的时候发现正常,于是我先回滚到正常的版本, ...
- 更换Qt QtEmbedded库的版本出现问题及解决(交叉编译OpenSSL)
近日将QtEmbedded库的版本由4.7.0更新到4.7.4.工具链并未改变,仍为 Target: arm-none-linux-gnueabiConfigured with: ......Thre ...
- Web页面制作之开发调试工具
直击现场 <HTML开发MacOSApp教程> http://pan.baidu.com/s/1jG1Q58M 开发工具介绍 开发工具一般分为两种类型:文本编辑器和集成开发环境(IDE) ...
- 很幽默的讲解六种Socket IO模型 Delphi版本(自己Select查看,WM_SOCKET消息通知,WSAEventSelect自动收取,Overlapped I/O 事件通知模型,Overlapped I/O 完成例程模型,IOCP模型机器人)
很幽默的讲解六种Socket IO模型(转)本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教. 一:select模型 二:WSAAsyncSel ...
- Delphi中,indy控件实现收发邮件的几点学习记录( 可以考虑加入多线程,用多个邮箱做一个邮箱群发器) 转
关于用Delphi中的Indy控件实现收发邮件的几点学习记录 这几天心里颇不宁静,不是因为项目延期,而是因为自己几个月前做的邮件发送程序至今无任何进展,虽然一向谦虚的人在网上发 ...
- Matlab与.Net混合编程-多维数组赋值出错的问题
问题描述:Matlab可编译供.net调用的dll.两种不同环境对数据类型的定义相差较大,因此在C#中调用Matlab编译的函数时,首先要将C#中的变量类型转换成与Matlab对应的中转类型.Matl ...
- 解决npm install卡住不动的小尴尬
npm install卡顿问题记录 遇到的问题 npm install -g @angular/cli 安装angular cli工具时,发现进度条一直卡住不动,相信很多朋友也遇到过.原因应该是国内的 ...