STL 补档
STL 补档
1.vector
作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。
它会动态申请空间,每新进来一个元素,就申请一个。申请着申请着你就MLE了(开玩笑的)。
#include <vector>
using namespace std;
vector<int> vec;
vec.push_back(a);
cout<<vec[0]<<endl;
vector<int>::iterator it;//使用迭代器访问元素.
for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl;
vec.insert(vec.begin()+i,a);//在第i+1个元素前面插入a
vec.erase(vec.begin()+2);//删除第3个元素
部分参考https://www.cnblogs.com/msymm/p/9006022.html 感谢!!
2.deque
容器属性
序列 | 动态数组 | Allocator-aware
序列容器的元素按严格线性排列,可按顺序访问它们的位置;
动态数组允许直接访问其任何元素,可快速在序列首尾相对快速进行元素添加 / 删除;
容器通过 allocator 对象动态处理存储需求
除了写起来方便之外,时间复杂度很垃圾。。。
迭代器相关函数:
(public member function )
begin
将迭代器返回到开头(增长方向:begin -> end)
end
将迭代器返回到结尾
rbegin
返回反向迭代器以反向开始(增长方向:rbegin -> rend)
rend
将反向迭代器返回到反向结束
cbegin(C++11)
将const_iterator返回到开头(与begin类似,区别在于begin指向的值可以改变,cbegin指向的值不可改变)
cend(C++11)
将const_iterator返回到开头末尾
crbegin(C++11)
返回const_reverse_iterator以反向开始
crend(C++11)
将const_reverse_iterator返回到反向结束
参考https://blog.csdn.net/Chnyac/article/details/82710050 感谢!!
3.list
是一个双向链表
关联容器:
4.set/multiset
multiset和set 可较快完成对一组数据的常规操作,包括:
https://i.loli.net/2019/07/29/5d3e527f880fd96629.png
multiset允许元素重复出现 set 保证元素唯一性,不允许元素重复
set操作:
#include<iostream>
#include<set> //引入set库
using namespace std;
int main() {
set<int> s; //定义包含整数的set
set<int>::iterator it; //定义迭代器
s.insert(8); //插入元素
s.insert(6);
s.insert(6);
s.insert(6);
//循环输出所有元素
for(it=s.begin();it!=s.end();it++)
cout<<*it<<endl;
return 0;
}
#include<iostream>
#include<set> //引入set库
using namespace std;
int main() {
set<int> s; //定义包含整数的set
set<int>::iterator it; //定义迭代器
s.insert(6);
s.insert(6);
cout<<s.count(6)<<endl; //返回6的个数
cout<<s.count(7)<<endl;
return 0;
}
#include<iostream>
#include<set>
using namespace std;
int main() {
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(3);
cout<<s.size(); //求总数
return 0;
}
#include<iostream>
#include<set> //引入set库
using namespace std;
int main() {
set<int> s; //定义包含整数的set
set<int>::iterator it; //定义迭代器
s.insert(8); //插入元素
s.insert(6);
s.erase(6); //删除元素
s.erase(6);
for(it=s.begin();it!=s.end();it++)
cout<<*it<<endl;
return 0;
}
#include<iostream>
#include<set> //引入set库
using namespace std;
int main() {
set<int> s; //定义包含整数的set
set<int>::iterator it; //定义迭代器
s.insert(6);
if(s.find(6)!=s.end())cout<<"Found!"<<endl;
else cout<<"Not found!"<<endl;
if(s.find(7)!=s.end())cout<<"Found!"<<endl;
else cout<<"Not found!"<<endl;
return 0;
}
5.map/multimap
一个映射
操作有:
#include<iostream>
#include<map>
using namespace std;
int main(){
map<char,int> d;
map<char,int>::iterator it;
// insert some values:
d['a']=10; d['b']=20;
d['c']=30; d['d']=40;
d['e']=50; d['f']=60;
it=d.find('b');
if(it!=d.end()) d.erase(it); // erasing by iterator
d.erase('c'); // erasing by key
d.erase('x'); // erasing by key
// show content:
for(it=d.begin(); it!=d.end(); ++it)
cout<<it->first<<" "<<it->second<<endl;
return 0;
}
#include<iostream>
#include<map>
using namespace std;
int main (){
map<char,int> d;
map<char,int>::iterator it;
d['a']=50; d['b']=100;
d['c']=150; d['d']=200;
it=d.find('b');
if(it!=d.end())
d.erase(it);
cout<<"a => "<<d.find('a')->second<<endl;
cout<<"c => "<<d.find('c')->second<<endl;
cout<<"d => "<<d.find('d')->second<<endl;
return 0;
}
#include<iostream>
#include<map>
using namespace std;
int main(){
map<char,int> d;
d['a']=101;
d['b']=202;
d['c']=302;
//cout<<d['x']<<endl;
cout<<d.size()<<endl;
return 0;
}
// accessing mapped values
#include<iostream>
#include<map>
#include<string>
int main(){
std::map<char,std::string> mymap;
mymap['a']="an element";
mymap['b']="another element";
mymap['c']=mymap['b'];
std::cout << "mymap['a'] is " << mymap['a'] << '\n';
std::cout << "mymap['b'] is " << mymap['b'] << '\n';
std::cout << "mymap['c'] is " << mymap['c'] << '\n';
std::cout << "mymap['d'] is " << mymap['d'] << '\n';
std::cout << "mymap now contains " << mymap.size() << " elements.\n";
return 0;
}
/*
Notice how the last access (to element 'd')
inserts a new element in the map with that key
and initialized to its default value (an empty string)
even though it is accessed only to retrieve its value.
Member function map::find does not produce this effect.
*/
#include<iostream>
#include<map>
using namespace std;
int main(){
map<char,int> d;
map<char,int>::iterator it;
d['b'] = 100;
d['a'] = 200;
d['c'] = 300;
// show content:
for(it=d.begin();it!=d.end();++it)
cout<<it->first<<" "<<it->second<<endl;
for(it=d.begin();it!=d.end();++it)
cout<<(*it).first<<" "<<(*it).second<<endl;
return 0;
}
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main(){
map<char,string> d;
d['a']="wawawa";
d['b']="hahaha";
d['c']=d['a'];
d['b']="hohoho";
cout<<d['a']<<endl;
cout<<d['b']<<endl;
cout<<d['c']<<endl;
cout<<d['x']<<endl;
return 0;
}
共有的成员函数:
empty size swap
至于我前面讲的 stack queue 都是 辣鸡 很慢,千万别用。 最好自己写。
感谢大家阅读。。!
STL 补档的更多相关文章
- 图论补档——KM算法+稳定婚姻问题
突然发现考前复习图论的时候直接把 KM 和 稳定婚姻 给跳了--emmm 结果现在刷训练指南就疯狂补档.QAQ. KM算法--二分图最大带权匹配 提出问题 (不严谨定义,理解即可) 二分图 定义:将点 ...
- [补档] 大假期集训Part.1
新博客搭起来先补一发档... 那就从大假期集训第一部分说起好了QwQ 自己还是太菜掉回了2016级水平 day1: day1的时候来得有点晚(毕竟准高一)然后进机房发现早就开考了还没有给我题面于是搞了 ...
- 软件安装配置笔记(三)——ArcGIS系列产品安装与配置(补档)(附数据库连接及数据导入)
在前两篇安装配置笔记之后,就忘记把其他安装配置笔记迁移过来了,真是失误失误!趁现在其他文档需要赶紧补上. 目录: 一.ArcMap 二.ArcMap连接数据库并导入数据 三.Arcgis Pro 四. ...
- [补档][ZJOI2007] 报表统计
[ZJOI2007] 报表统计 题目 传送门 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工作,作为她的生日礼物之一. 经过仔细观察,小Q发现统计一 ...
- 补档 Codeblocks下的文件标题栏(标签)显示方法
可能在以下链接也能看到这篇文档 我知道很多人都不知道这个到底叫啥,还不如直接一点: 文件标题栏 就是如下的效果. 解决办法: 在左上角第三个view下,打开后取消Hide editor tabs 选项 ...
- Leave It Behind and Carry On ---- 高一下期末考反思 [补档]
背景 这个学期的前\(\frac{3}{4}\), 我都是在停课集训中度过的, 先是GDKOI, 再是北京集训, 最后是GDOI, 结果GDOI还没进day3就滚粗了. 学校的内容是考完GDOI后回学 ...
- Java 高效编程(Effective Java)中文第三版(补档)
来源:sjsdfg/effective-java-3rd-chinese <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过, ...
- [补档]暑假集训D8总结
%dalao 今天有两位大佬来讲课,meaty来讲了Catalan(本来说好的莫比乌斯反演呢),聪聪来讲Splay呢 至于听课笔记= =,没来得及记= = 不过好不想上树啊,上了树就下不来了 考试 仍 ...
- [补档]从OI学麻将
背景 作为一名川娃子,怎么能不懂麻将呢= = T1 さきなに~~ [咲 -Saki-] 天才麻将少女什么编 题目 二十一世纪,世界上的麻将竞技人数超过一亿,日本每年也有大规模的全国大赛来对麻将选手进行 ...
随机推荐
- IntelliJ IDEA提升效率开发插件必备
工欲善其事,必先利其器,好的工具可以提升我们的开发效率,下面介绍几款个人觉得比较好的编辑器插件,不仅炫酷更重要可以提高你的工作效率. 本文是作者辛苦整理的16款插件,每个都是超级实用的,不好不介绍,相 ...
- zuul集成Sentinel最新的网关流控组件
一.说明 Sentinel 网关流控支持针对不同的路由和自定义的 API 分组进行流控,支持针对请求属性(如 URL 参数,Client IP,Header 等)进行流控.Sentinel 1.6.3 ...
- 网络安全攻击与防护--HTML学习
第一节. HTML基本语法(文末有对该文视频讲解) HTML的官方介绍什么的我就不说了,打字也挺累的,只简单介绍一下吧,其他的懂不懂都没关系. HTML全称为Hypertext Markup Lang ...
- Hive 系列(四)—— Hive 常用 DDL 操作
一.Database 1.1 查看数据列表 show databases; 1.2 使用数据库 USE database_name; 1.3 新建数据库 语法: CREATE (DATABASE|SC ...
- Shell总结2
1.---------->>sed命令用来取指定范围行. 2.--------------->>>>“$?“返回值的用法 (1)判断命令.脚本或函数等程序是否执行成 ...
- Scrum 工件: 速度图和燃尽图
速度图 Velocity用于衡量scrum团队持续提供业务价值的速度,可以采用历史估算的方法,衡量一个又一个sprint的速度.团队通过跟踪完成达到自己团队完成标准的故事点的数量,就可以基于相对点值对 ...
- python所有的标准异常类:
异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 ...
- MySQL5.7.27报错[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated
mysql5.7.27在运行更新语句时出现如下情况,mysql5.6之前没有这种情况出现. of ORDER BY clause is not in GROUP BY clause and conta ...
- iOS Autoresizing Autolayout Size classes
Autoresizing:出现最早,仅仅能够针对父控件做约束(注意:要关闭Autolayout&Size classes才能够看到Autoresizing) 代码对应: UIView.h中的a ...
- 【selenium】- 自动化框架环境搭建
本文由小编根据慕课网视频亲自整理,转载请注明出处和作者. 1. 环境搭建 本课程选用的是selenium + java. 2. java环境的搭建 环境变量配置: 以win10为例,打开控制面板& ...