深入解析vector的定义、存储及与其他容器的差异

日期: 2025-10-13 20:03:56|浏览: 14|编号: 106954

友情提醒:信息内容由网友发布,本站并不对内容真实性负责,请自鉴内容真实性。

一、的定义

1. 是表示可变大小数组的序列容器

它以数组的方式,运用连续的存储区域来容纳各项内容。这就使得能够借助索引号,对各个内容进行快速检索,其效率与数组相似。然而它不同于数组,其规模能够灵活调整,并且容器的内部机制会自动管理这一变化过程。

分配空间时,会预留部分额外容量,以应对未来数据量的增加,因为实际占用的存储空间要小于分配的总空间。各个库在处理空间分配和重新分配问题时,会采取不同的方法,来平衡存储效率与资源消耗。但无论如何调整,重新分配的步长都应当遵循对数增长的模式,这样在列表末尾添加新元素的操作,其时间复杂度才能保持在常数级别。

它比其他动态序列容器,例如deque和list,在检索元素时更为迅速,在序列末端进行元素的添加和移除操作也较为便捷。然而,在序列中间位置进行元素的删除和插入操作时,其性能表现较差。此外,它在处理迭代器和引用方面,也比list和deque更为优越。

二、 常见接口的使用 2.1 构造函数

void TestVector1()
{
    // vector的构造
    vector一个空的整数型向量,没有任何元素。
    vector设置四个整数值,均为100,并执行second函数
    vector遍历第二个序列的所有元素,从其起始位置到结束位置
    vector第四个(第三个);                        也即第三个的摹本
}

2.2 (迭代器) 2.2.1 (迭代器)的定义

迭代器是用来查看集合内各个成分并逐一处理它们的数据结构,一般用来访问C++里各种集合里的成分,不过不同的集合会配备不同的迭代器,对于刚入门的人,可以把迭代器当作是指针来看待。

2.2.2  的使用

void TestVector2()
{
    // 使用push_back插入4个数据
    vector v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(4);
    // 使用迭代器进行遍历打印
    vector::iterator it = v.begin();
    while (it != v.end())
    {
        cout << *it << " ";
        ++it;
    }
    cout << endl;
    // 使用迭代器进行修改
    it = v.begin();
    while (it != v.end())
    {
        *it *= 2;
        ++it;
    }
    // 使用反向迭代器进行遍历再打印
    // vector::反向迭代器 rit 等于容器 v 的逆向开始位置
    auto rit = v.rbegin();
    while (rit != v.rend())
    {
        cout << *rit << " ";
        ++rit;
    }
    cout << endl;
}

提醒:请联系我时一定说明是从101箱包皮具网上看到的!