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-] 天才麻将少女什么编 题目 二十一世纪,世界上的麻将竞技人数超过一亿,日本每年也有大规模的全国大赛来对麻将选手进行 ...
随机推荐
- ecshop 管理后台菜单及权限管理机制
ecshop 所有的一级菜单选项存放于languages\zh_cn\admin\common.php 文件里面,使用 $_LANG['02_cat_and_goods'] = '商品管理'; 这样 ...
- 7.4 元组tuple类型内置方法
元组tuple 元组相当于不可变的列表,在定义完成后后面就不可以进行更改,因此元组只可取不可存 因为不可变,所以相对列表来说,他的功能也少了很多,所以,不难理解,他有个优点就是占用内存小. 作用:能够 ...
- .NET World——gPRC概览
什么是gRPC 官方的定义: gRPC is a modern open source high performance RPC framework that can run in any envir ...
- Ubuntu下安装php7.1的gd,mysql,pdo_mysql扩展库
执行以下命令 # apt-get install php7.1-gd # apt-get install php7.0-mysql 重新启动 php7.1-fpm(因为我是安装的 Nginx 和 ph ...
- 如何使用Python连接ldap
如何使用Python连接ldap 好多使用ldap认证的软件都是Python的,比如superset和airflow, 好吧,他们都是airbnb家的.在配置ldap的时候可能会出现认证失败,你不知道 ...
- Joda Time使用小结
一.Joda Time基础操作 1. 构造指定时间 // 明确给出年月日时分秒,同时还可以指定毫秒 DateTime dateTime = new DateTime(2017,9,14,20,30,0 ...
- Django+Vue前后端分离项目的部署
部署静态文件: 静态文件有两种方式 1:通过django路由访问 2:通过nginx直接访问 方式1: 需要在根目录的URL文件中增加 url(r'^$', TemplateView.as_view( ...
- Container及其内部进程监控剖析
目前市场上的虚拟化技术种类很多,例如moby(docker).LXC.RKT等等.在带来方便应用部署和资源充分利用的好处的同时,如何监控相应Container及其内部应用进程成为运维人员不可避免遇到的 ...
- 只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常
## 统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生. 比较通用的返回值格式如下: ```jav ...
- MySQL之Xtrabackup的使用
一.Xtrabackup介绍 XtraBackup(PXB) 工具是 Percona 公司用 perl 语言开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Pe ...