龙空技术网

C++/STL源码剖析之顺序容器:vector

学无止境 54

前言:

今天大家对“vector定义大小”大体比较关怀,朋友们都想要知道一些“vector定义大小”的相关知识。那么小编在网摘上收集了一些有关“vector定义大小””的相关内容,希望你们能喜欢,我们快快来了解一下吧!

`vector`(向量):`vector`是一种动态数组容器,可以在运行时根据需要调整大小。它提供了高效的随机访问和在末尾添加/删除元素的操作。

迭代器

vector维护的是一个连续线性空间,所以不论其元素类型为何,普通指针都可以作为vector的迭代器而满足所有必要条件,因为vector迭代器所需要的操作行为,如operator*,operator->,operator++,operator--,operator+,operator-,operator+=,operator-=,普通指针天生就具备。vector支持随机存取,而普通指针正有着这样的能力。所以,vector提供的是Random Access Iterators:

template <class T,class Alloc = alloc>class vector{public:    typedef T               value_type;    typedef value_type*     iterator;   //vector的迭代器时普通指针...};
分配器

vector缺省使用alloc作为空间分配器,并据此另外定义了一个data_allocator,为的是更方便以元素大小为配置单位:

template<class T,class Alloc = alloc>class vector{protected:    typedef simple_alloc<value_type,Alloc> data_allocator;...};

因此,data_allocator::allocate(n)表示分配n个元素空间

demo

#include <iostream>#include <vector>int main() {    // 创建一个整数类型的 vector    std::vector<int> numbers = {1, 2, 3, 4, 5};    // 输出 vector 的大小    std::cout << "Vector size: " << numbers.size() << std::endl;    // 访问 vector 中的元素    std::cout << "First element: " << numbers[0] << std::endl;    // 修改 vector 中的元素    numbers[2] = 10;    std::cout << "Updated vector: ";    for (int num : numbers) {        std::cout << num << " ";    }    std::cout << std::endl;    return 0;}

标签: #vector定义大小