前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

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

qiguaw 2024-10-29 15:25:07 资源文章 15 ℃ 0 评论

`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;
}


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表