容器
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