C++之Vector数据结构

281 阅读2分钟

vector 是 C++ 标准库中的一种动态数组,可以自动进行内存管理,具有以下特点:

  1. vector 的大小可以动态调整。
  2. vector 支持快速随机访问。
  3. vector 支持在尾部添加元素,时间复杂度为 O(1)。
  4. vector 可以存储任意类型的元素。

下面是一个简单的使用 vector 的例子:

#include <iostream> 
#include <vector> 
int main() { 
    std::vector<int> v; // 创建一个空的 
    vector v.push_back(1); // 在尾部添加元素 
    v.push_back(2); 
    v.push_back(3); 
    for (int i : v) { 
        std::cout << i << " "; 
    } 
    return 0; 
}

在上面的例子中,我们首先创建了一个空的 vector,然后使用 push_back 方法在尾部添加了三个整数元素。最后,我们使用 for 循环遍历 vector 并打印出每个元素的值。

vector 还提供了其他一些常用的方法,例如:

  • size():返回 vector 的大小。
  • empty():判断 vector 是否为空。
  • pop_back():删除尾部元素。
  • at(index):返回指定位置的元素。
  • front():返回头部元素。
  • back():返回尾部元素。
  • emplace_backemplace_backpush_back都是C++标准库中vector类成员函数,用于在容器的末尾插入元素。它们的区别如下:
  1. 参数传递方式:push_back接受参数并通过拷贝或移动来插入新元素;而emplace_back接受参数并通过就地构造的方式插入新元素,这意味着它可以在容器内部直接修改元素,而不需要执行拷贝或移动操作。
  2. 性能开销:由于emplace_back直接在容器末尾构造新元素,而不需要执行拷贝或移动操作,因此它比push_back更高效。在大量插入元素时,这种差异会更加明显。
  3. 代码可读性:emplace_back的用法更加简洁明了,因为它可以避免创建临时对象和执行拷贝或移动操作。这使得代码更易于理解和维护。

总之,如果你需要插入一个新元素到容器的末尾,并且希望避免拷贝或移动操作以提高性能和代码可读性,那么使用emplace_back是更好的选择。