详细介绍c++标准库中的vector容器

std::vector 是 C++ 标准库中的一个动态数组容器,属于序列容器的一种。它能够存储一组相同类型的元素,并且支持动态调整大小。std::vector 提供了高效的随机访问、动态扩展和收缩功能,是 C++ 中最常用的容器之一。

主要特性

  1. 动态数组std::vector 在内部使用动态分配的数组来存储元素,因此它可以在运行时动态调整大小。

  2. 连续存储:元素在内存中是连续存储的,这使得 std::vector 支持高效的随机访问。

  3. 自动内存管理std::vector 会自动管理内存,当元素数量增加时,它会自动分配更多的内存;当元素数量减少时,它会释放多余的内存。

  4. 丰富的接口std::vector 提供了丰富的成员函数和操作符,方便进行元素的插入、删除、访问等操作。

常用成员函数

构造函数

1.vector():默认构造函数,创建一个空的 vector

2.vector(size_type n):创建一个包含 n 个默认初始化元素的 vector

3.vector(size_type n, const T& value):创建一个包含 n 个值为 value 的元素的 vector

4.vector(const vector& other):拷贝构造函数,创建一个与 other 相同的 vector

5.vector(vector&& other):移动构造函数,创建一个从 other 移动过来的 vector

6.vector(initializer_list init):使用初始化列表创建 vector

赋值操作

1.vector& operator=(const vector& other):拷贝赋值操作符。

2.vector& operator=(vector&& other):移动赋值操作符。

3.vector& operator=(initializer_list init):使用初始化列表赋值。

元素访问

1.reference operator[](size_type pos):返回指定位置 pos 的元素的引用,不进行边界检查。

2.const_reference operator[](size_type pos) const:返回指定位置 pos 的元素的常量引用,不进行边界检查。

3.reference at(size_type pos):返回指定位置 pos 的元素的引用,进行边界检查,如果 pos 超出范围则抛出 std::out_of_range 异常。

4.const_reference at(size_type pos) const:返回指定位置 pos 的元素的常量引用,进行边界检查。

5.reference front():返回第一个元素的引用。

6.const_reference front() const:返回第一个元素的常量引用。

7.reference back():返回最后一个元素的引用。

8.const_reference back() const:返回最后一个元素的常量引用。

9.T* data():返回指向底层数组的指针。

10const T* data() const:返回指向底层数组的常量指针。

容量相关

1.bool empty() const:检查 vector 是否为空。

2.size_type size() const:返回 vector 中元素的数量。

3.size_type max_size() const:返回 vector 可以容纳的最大元素数量。

4.void reserve(size_type new_cap):预留至少 new_cap 的空间,以减少后续插入操作的内存分配次数。

5.size_type capacity() const:返回当前 vector 分配的内存空间大小。

6.void shrink_to_fit():请求移除未使用的容量,减少 vector 的内存占用。

修改操作

1.void clear():清空 vector 中的所有元素。

2.iterator insert(const_iterator pos, const T& value):在指定位置 pos 插入一个元素 value

3.iterator insert(const_iterator pos, size_type count, const T& value):在指定位置 pos 插入 count 个元素 value

4.iterator insert(const_iterator pos, InputIt first, InputIt last):在指定位置 pos 插入范围 [first, last) 内的元素。

5.iterator insert(const_iterator pos, initializer_list init):在指定位置 pos 插入初始化列表 init 中的元素。

6.iterator erase(const_iterator pos):删除指定位置 pos 的元素。

7.iterator erase(const_iterator first, const_iterator last):删除范围 [first, last) 内的元素。

8.void push_back(const T& value):在 vector 的末尾添加一个元素 value

9.void push_back(T&& value):在 vector 的末尾添加一个元素 value(移动语义)。

10.void pop_back():删除 vector 的最后一个元素。

11.void resize(size_type count):将 vector 的大小调整为 count,如果 count 大于当前大小,则新元素将进行默认初始化。

12.void resize(size_type count, const T& value):将 vector 的大小调整为 count,如果 count 大于当前大小,则新元素将初始化为 value

13.void swap(vector& other):交换两个 vector 的内容。

迭代器

1.iterator begin():返回指向第一个元素的迭代器。

2.const_iterator begin() const:返回指向第一个元素的常量迭代器。

3.iterator end():返回指向最后一个元素之后位置的迭代器。

4.const_iterator end() const:返回指向最后一个元素之后位置的常量迭代器。

5.reverse_iterator rbegin():返回指向最后一个元素的反向迭代器。

6.const_reverse_iterator rbegin() const:返回指向最后一个元素的常量反向迭代器。

7.reverse_iterator rend():返回指向第一个元素之前位置的反向迭代器。

8.const_reverse_iterator rend() const:返回指向第一个元素之前位置的常量反向迭代器。

#include 
#include 

int main() {
    // 创建一个空的 vector
    std::vector vec;

    // 添加元素
    vec.push_back(10);
    vec.push_back(20);
    vec.push_back(30);

    // 访问元素
    std::cout << "First element: " << vec[0] << std::endl;
    std::cout << "Second element: " << vec.at(1) << std::endl;

    // 遍历 vector
    for (int i : vec) {
        std::cout << i << " ";
    }
    std::cout << std::endl;

    // 删除最后一个元素
    vec.pop_back();

    // 插入元素
    vec.insert(vec.begin() + 1, 15);

    // 再次遍历 vector
    for (int i : vec) {
        std::cout << i << " ";
    }
    std::cout << std::endl;

    // 清空 vector
    vec.clear();

    // 检查是否为空
    if (vec.empty()) {
        std::cout << "Vector is empty." << std::endl;
    }

    return 0;
}

你可能感兴趣的:(c++,算法)