c++基础STL
2024-09-04 12:20:57
今天给大家介绍几个容器,包含的头文件为<vector>,<stack>,<queue>,<map>,<list>,<deque>,<set>;
序列式容器
向量(vector) 连续存储的元素<vector>,其实就是数组的强化版,基本初始化和操作函数如下
//一维vector的初始化
vector<int> vec1; //默认初始化,vec1为空
vector<int> vec2(vec1); //使用vec1初始化vec2
vector<int> vec3(vec1.begin(),vec1.end());//使用vec1初始化vec2
vector<int> vec4(); //10个值为0的元素
vector<int> vec5(,); //10个值为4的元素
vector<string> vec6(,"null"); //10个值为null的元素
vector<string> vec7(,"hello"); //10个值为hello的元素
//二维vector的初始化(和一维的类似)
vector<vector<int> >vec8; //默认初始化,vec8为空
//其他的也一样,这里就不演示了。
//基本操作
vec1.push_back(100); //添加元素
int size = vec1.size(); //元素个数
bool isEmpty = vec1.empty(); //判断是否为空
cout<<vec1[0]<<endl; //取得第一个元素
vec1.insert(vec1.end(),5,3); //从vec1.back位置插入5个值为3的元素
vec1.pop_back(); //删除末尾元素
vec1.erase(vec1.begin(),vec1.end());//删除之间的元素,其他元素前移
cout<<(vec1==vec2)?true:false; //判断是否相等==、!=、>=、<=...
vector<int>::iterator iter = vec1.begin(); //获取迭代器首地址
vector<int>::const_iterator c_iter = vec1.begin(); //获取const类型迭代器
vec1.clear(); //清空元素
//遍历方法
//下标法(vector的特有访问方法,一般容器只能通过迭代器(类似c中的指针)访问)
int length = vec1.size();
for(int i=0;i<length;i++)
{
cout<<vec1[i];
}
cout<<endl<<endl;
//迭代器法
vector<int>::const_iterator iterator = vec1.begin();
for(;iterator != vec1.end();iterator++)
{
cout<<*iterator;
} //其他的我就不写了可以看下最后那个链接的博客
列表(list) 由节点组成的双向链表,每个结点包含着一个元素<list>
双端队列(deque) 连续存储的指向不同元素的指针所组成的数组<deque>
适配器容器
栈(stack) 后进先出(FILO)的值的排列 <stack>
队列(queue) 先进先出(FIFO)的值的排列 <queue>
优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 <queue>
关联式容器
集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 <set>
多重集合(multiset) 允许存在两个次序相等的元素的集合 <set>
映射(map) 由{键,值}对组成的集合,以某种作用于键对上的谓词排列 <map>
多重映射(multimap) 允许键对有相等的次序的映射 <map>(摘自百度)
https://blog.csdn.net/u014465639/article/details/70241850(大佬总结的STL容器的使用方法)
最新文章
- 数据结构笔记--栈的总结及java数组实现简单栈结构
- Python(七)Socket编程、IO多路复用、SocketServer
- 虚拟机NAT网络配置
- .NET加密方法
- android 在线升级借助开源中国App源码
- java去处重复输出
- vimium: 浏览器神器
- Android or iOS 运行 meteor App 屏幕一片空白 White screen的解决方法
- int.class与Integer.type的不同
- FZYZ-2071 A Simple Math Problem IX
- php composer使用
- 1)phpmyadmin导入数据库大小限制修改
- 开源 自由 java CMS - FreeCMS1.8 网上申报
- Ajax (AppServ服务器练习)
- vim配置文件(本人喜欢的风格)
- N2N windows下编译安装文件
- 031_keepalive+nginx保证nginx高可用
- CSS: Grid homework redact.
- [Linux/Ubuntu] vi/vim 使用方法讲解
- win7 64位 python启动报错:无法启动此程序,因为计算机中丢失api-ms-win-crt-process-l1-1-0.dll
热门文章
- Django—Cookie and Session
- 定期重启SSRS 服务
- 01_dubbo实例_服务分组
- vs2010开发activex(MFC)控件/ie插件(二):js传参数
- python 面向对象 【进阶】
- 理解LSTM/RNN中的Attention机制
- html5自我总结
- Linux ->;>; UBuntu ->;>; Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
- SQL点点滴滴_DELETE小计
- SQL-SERVER学习(二) 数据表的存储过程