圆咕噜咕噜 发表于 2024-5-13 15:54:22

C++STL第二篇(vector的原理用法)

vector

vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性。Array是静态空间,一旦设置了就不能改变,要换大一点大概小一点的空间,可以,一切琐碎得由自己来,首先设置一块新的空间,然后将旧空间的数据搬往新空间,再释放原来的空间。Vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素。因此vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必畏惧空间不足而一开始就要求一个大块头的array了。
Vector的实现技术,关键在于其对大小的控制以及重新设置时的数据移动效率,一旦vector旧空间满了,如果客户每新增一个元素,vector内部只是扩充一个元素的空间,实为不智,因为所谓的扩充空间(岂论多大),一如刚所说,是”设置新空间-数据移动-释放旧空间”的大工程,时间本钱很高,应该加入某种未雨绸缪的考虑,稍后我们便可以看到vector的空间设置策略。
https://img2023.cnblogs.com/blog/2862884/202403/2862884-20240310211233138-286328846.png
Vector维护一个线性空间,以是岂论元素的型别如何,平常指针都可以作为vector的迭代器,因为vector迭代器所必要的操作行为,如operaroe*, operator->, operator++, operator--, operator+, operator-, operator+=, operator-=, 平常指针天生具备。Vector支持随机存取,而平常指针正有着这样的能力。以是vector提供的是随机访问迭代器(Random Access Iterators).
#include// 包含 vector 头文件// 创建一个存储 int 类型的 vectorstd::vector intVector;// 向 vector 尾部添加元素intVector.push_back(42);// 获取 vector 的大小(元素个数)int size = intVector.size();// 获取 vector 的容量(当前分配的存储空间大小)int capacity = intVector.capacity();// 访问 vector 中的元素int element = intVector; // 使用下标访问// 遍历 vector 中的所有元素for (int i = 0; i < intVector.size(); ++i) {    std::cout
页: [1]
查看完整版本: C++STL第二篇(vector的原理用法)