博客园的一篇关于vector源码的文章,可以更加深入的理解一下vector:STL源码剖析---vector
STL容器包括顺序式容器和关联式容器,主要介绍一下顺序式容器(vector、list、deque、queue、stack);
vector:其实可以就简单地理解为一个动态数组,可以从末尾直接添加元素,能改变数组大小。(参考一下百度百科定义: vector )
vector举例:
1 vector<int>a; // 默认初始化; 2 vector<int>a(50); // 数组a有50个为0的元素; 3 vector<int>a(10,7); // 10个为7的元素; 4 vector<int>b(a); // 用a定义b; 5 6 struct Point { 7 int x; 8 int y; 9 }; 10 vector<Point>a; // 结构体类型数组
主要函数:
1 push_back(); // 在尾部添加元素; 2 size(); // 元素个数; 3 empty(); // 是否为空; 4 insert(); // 插入; 5 pop_back(); // 删除末尾元素; 6 erase(); // 删除; 7 clear(); // 清空; 8 sort(); // 排序; 9 sort(start, end, cmp) 10 // start 排序数组的起始地址; 11 // end 排序数组结束地址的下一位; 12 // cmp 排序的方法,默认为升序;
如果需要详细理解,完全是可以看上面链接的源代码,别人的文章也写得更好,可以详细琢磨,更好的体会vector;
贴一以前写过的:用结构和STL常用算法实现对学生成绩的排序和查找(vector)
list:list是双向循环链表,每一个元素都可以直接访问前面一个元素和后面一个元素。实际上list的使用和vector的使用方法差不多。list适用于插入和删除频繁,随机访问较少的情况,vector适用于插入和删除较少,随机访问多的情况。
关于list的举例我还是老实的做一个传送门算了:https://blog.csdn.net/xiaoquantouer/article/details/70339869
下次再写吧。