博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++之旅:模板库中的容器
阅读量:7249 次
发布时间:2019-06-29

本文共 2007 字,大约阅读时间需要 6 分钟。

容器

C++中的容器包括array, vector, list,map,set

数组

array不可变长,创建时其大小就固定了,array中可以存储各种数据类型包括对象,不过array是在栈上分配的,如果存储的数据量比较大可能导致栈溢出

#include 
#include
#include
using namespace std;int main(int argc, char **argv) { array
arrString = {"1", "2", "3", "4", "5"}; array
arrInt = {1,2,3,4}; for (string str : arrString) cout << str << endl; for (int i : arrInt) cout << i << endl;}

vector

vector是在堆上创建的,所以其存储容量是无限的。其底层先通过malloc分配一定的空间,如果空间不够了通过realloc重新分配,所以vector底层本质是数组

#include 
#include
using namespace std;int main(int argc, char **argv) { vector
myVector; for (int i = 1; i<11; i++) { myVector.push_back(i); //尾部插入元素 } //返回尾部元素 cout << myVector.back() << endl; //获取10处的元素 cout << myVector.at(9) << endl; //迭代访问 for (int i : myVector) cout << i << endl;}

list

list底层使用链表来实现的,其成员函数和vector大部分是一样的

#include 
#include
using namespace std;int main(int argc, char **argv) { list
myList; for (int i = 1; i<11; i++) { myList.push_back(i); } //返回尾部元素 cout << myList.back()<< endl; //在第8个位置插入100 //创建迭代器(本质是指针) std::list
::iterator it = myList.begin(); for(int i=0; i<8; i++) it++; myList.insert(it, 100); //迭代访问 for (int i : myList) cout << i << endl;}

map

map的底层通过红黑树来实现

#include 
#include
#include
using namespace std;int main () { map
mymap = { { "a", 10 }, { "b", 0 }, { "c", 0 } }; //插入元素 mymap.insert (pair
("d",100)); cout << mymap.at("d") << endl; //查找元素并删除 map
::iterator it = mymap.find("c"); if (it != mymap.end()) mymap.erase (it); //删除元素 mymap.erase ("b"); return 0;}

转载于:https://www.cnblogs.com/xidongyu/p/6916473.html

你可能感兴趣的文章
[译] 如何写出更好的 React 代码?
查看>>
一起撸个朋友圈吧(step3) - ListAdapter篇
查看>>
LeetCode 642 号问题:设计搜索自动补全系统
查看>>
探究Android View 绘制流程,Canvas 的由来
查看>>
JS原生交互
查看>>
[译] JavaScript 工作原理:Web Worker 的内部构造以及 5 种你应当使用它的场景
查看>>
Android使用Path仿支付宝支付成功失败动画
查看>>
聊聊rocketmq的DailyRollingFileAppender
查看>>
HTTP/2
查看>>
[单刷APUE系列]第十七章——高级进程间通信
查看>>
分布式之消息队列的特点、选型、及应用场景详解
查看>>
多迪学员问到最多的问题:为什么要学习Python编程语言?
查看>>
从vue中学习defineProperty
查看>>
漂亮的颜色
查看>>
Android Volley 源码解析(二),探究缓存机制
查看>>
Go源码剖析:内置类型
查看>>
102. Binary Tree Level Order Traversal
查看>>
SAP云平台对Kubernetes的支持
查看>>
原来实现GCP用客户端登录这么简单啊
查看>>
PAT A1057 分块思想
查看>>