c++之旅:模板库中的容器
2017-05-28 19:56
393 查看
容器
C++中的容器包括array, vector, list,map,set
数组
array不可变长,创建时其大小就固定了,array中可以存储各种数据类型包括对象,不过array是在栈上分配的,如果存储的数据量比较大可能导致栈溢出#include <string> #include <array> #include <iostream> using namespace std; int main(int argc, char **argv) { array<string, 5> arrString = {"1", "2", "3", "4", "5"}; array<int, 4> 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 <vector> #include <iostream> using namespace std; int main(int argc, char **argv) { vector<int> 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 <list> #include <iostream> using namespace std; int main(int argc, char **argv) { list<int> myList; for (int i = 1; i<11; i++) { myList.push_back(i); } //返回尾部元素 cout << myList.back()<< endl; //在第8个位置插入100 //创建迭代器(本质是指针) std::list<int>::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 <iostream> #include <string> #include <map> using namespace std; int main () { map<string,int> mymap = { { "a", 10 }, { "b", 0 }, { "c", 0 } }; //插入元素 mymap.insert (pair<string,int>("d",100)); cout << mymap.at("d") << endl; //查找元素并删除 map<string,int>::iterator it = mymap.find("c"); if (it != mymap.end()) mymap.erase (it); //删除元素 mymap.erase ("b"); return 0; }
相关文章推荐
- C++容器模板在共享内存中的使用
- C++模板实战5: 迭代器与容器
- C++学习笔记6--高级强制类型转换 命名空间和模块化编程 C预处理器 链接和作用域 函数模板 类模板 内联模板 容器和算法
- C++模板和容器的介绍
- 插入排序算法,c++ 模板技术表述,完全兼容标准库容器!!!
- ZOJ1109 使用了C++中的map容器这时问题就会变得很简单,不过我想下次不用模板做下
- C++中容器跟模板有什么异同么?用简单易懂的话
- 从零开始学C++之模板(三):缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename
- C++ 模板 之 类型萃取 与 容器适配器
- C++容器模板在共享内存中的使用
- C++ 模板 之 类型萃取 与 容器适配器
- C++ STL模板与容器 知识 初学 小结 ( 三 )
- C++STL模板容器(一)
- 从零开始学C++之模板(三):缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename
- C++ STL模板与容器 知识 初学 小结 ( 一 )
- C++容器模板在共享内存中的使用
- c++ 模板参数做容器参数迭代器报错 vector<T>::const_iterator,typename const报错
- C++容器模板在共享内存中的使用
- C++STL模板容器(二)
- C++标准容器模板库 声明集合