doc/notebook/docs/C++/6.vector.md

3.4 KiB
Raw Permalink Blame History

  1. 构造函数

    • vector<T>:创建一个空的向量,元素类型为 T
    • vector<T>(size_type count):创建包含 count 个默认构造的元素的向量。
    • vector<T>(size_type count, const T& value):创建包含 count 个值为 value 的元素的向量。
    • vector<T>(InputIterator first, InputIterator last):使用迭代器范围 [first, last) 中的元素创建向量。
  2. 元素访问

    • vector::operator[]:通过索引访问元素。
    • vector::at(size_type pos):通过位置访问元素,如果越界会抛出 std::out_of_range 异常。
    • vector::front():返回第一个元素的引用。
    • vector::back():返回最后一个元素的引用。
    • vector::data():返回指向底层数据的指针。
  3. 迭代器

    • vector::begin():返回指向第一个元素的迭代器。
    • vector::end():返回指向最后一个元素后面位置的迭代器。
    • vector::rbegin():返回指向最后一个元素的逆向迭代器。
    • vector::rend():返回指向第一个元素前面位置的逆向迭代器。
  4. 容量

    • vector::size():返回向量中元素的数量。
    • vector::max_size():返回向量能容纳的最大元素数量。
    • vector::empty():检查向量是否为空。
    • vector::reserve(size_type new_cap):为向量预留至少能容纳 new_cap 个元素的空间。
    • vector::capacity():返回向量当前能容纳的元素数量。
  5. 修改容器

    • vector::push_back(const T& value):在向量末尾添加一个元素。
    • vector::pop_back():移除向量末尾的元素。
    • vector::insert(iterator pos, const T& value):在指定位置插入一个元素。
    • vector::erase(iterator pos):移除指定位置的元素。
    • vector::clear():清空向量中的所有元素。
  6. 比较

    • vector::operator==vector::operator!=vector::operator<vector::operator<=vector::operator>vector::operator>=:用于比较两个向量的操作符。
  7. 其他操作

    • vector::swap(vector& other):交换两个向量的内容。
    • vector::emplace_back(Args&&... args):在向量末尾构造一个元素。
    • vector::shrink_to_fit():将向量的容量调整为其当前元素数量。
#include <iostream>
#include <vector>

int main() {
    // 创建一个空的整数向量
    std::vector<int> numbers;

    // 在向量末尾添加元素
    numbers.push_back(10);
    numbers.push_back(20);
    numbers.push_back(30);

    // 使用迭代器遍历向量并输出元素
    std::cout << "Vector elements:";
    for (auto it = numbers.begin(); it != numbers.end(); ++it) {
        std::cout << " " << *it;
    }
    std::cout << std::endl;

    // 访问向量的第一个和最后一个元素
    std::cout << "First element: " << numbers.front() << std::endl;
    std::cout << "Last element: " << numbers.back() << std::endl;

    // 检查向量是否为空
    std::cout << "Is the vector empty? " << (numbers.empty() ? "Yes" : "No") << std::endl;

    // 获取向量的大小和容量
    std::cout << "Vector size: " << numbers.size() << std::endl;
    std::cout << "Vector capacity: " << numbers.capacity() << std::endl;

    // 清空向量
    numbers.clear();

    std::cout << "Vector size after clear: " << numbers.size() << std::endl;

    return 0;
}