复试:机试——vector

在 C++ 中,std::vector 是标准模板库(STL)里非常实用的容器,它能够存储一系列相同类型的元素,并且大小可以动态改变。以下是 std::vector 的一些常见用法:

1. 包含头文件

要使用 std::vector,需要包含 <vector> 头文件:

#include <vector>

2. 定义和初始化

  • 默认初始化:创建一个空的 vector
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec; // 创建一个存储 int 类型元素的空 vector
    return 0;
}

  • 指定初始大小:创建一个包含指定数量元素的 vector,元素初始值为默认值。
std::vector<int> vec(5); // 创建一个包含 5 个 int 元素的 vector,初始值为 0

  • 指定初始大小和初始值:创建一个包含指定数量元素的 vector,并将所有元素初始化为指定值。
std::vector<int> vec(5, 10); // 创建一个包含 5 个 int 元素的 vector,每个元素的值都是 10

  • 使用初始化列表:使用花括号 {} 来初始化 vector
std::vector<int> vec = {1, 2, 3, 4, 5}; // 创建一个包含 5 个元素的 vector,元素值分别为 1, 2, 3, 4, 5

  • 使用另一个 vector 初始化
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2(vec1); // 使用 vec1 初始化 vec2,vec2 内容与 vec1 相同

3. 访问元素

  • 使用下标运算符 []:类似于数组,通过下标访问元素,但不进行边界检查。
std::vector<int> vec = {1, 2, 3};
std::cout << vec[1] << std::endl; // 输出第二个元素,即 2

  • 使用 at() 成员函数:通过下标访问元素,会进行边界检查,如果越界会抛出 std::out_of_range 异常。
std::vector<int> vec = {1, 2, 3};
try {
    std::cout << vec.at(1) << std::endl; // 输出第二个元素,即 2
    std::cout << vec.at(3) << std::endl; // 会抛出 std::out_of_range 异常
} catch (const std::out_of_range& e) {
    std::cerr << "Out of range error: " << e.what() << std::endl;
}

  • 使用迭代器:迭代器可以用来遍历 vector 中的元素。
std::vector<int> vec = {1, 2, 3};
for (auto it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " "; // 输出每个元素
}
std::cout << std::endl;

  • 范围 for 循环:更简洁的遍历方式。
std::vector<int> vec = {1, 2, 3};
for (int num : vec) {
    std::cout << num << " "; // 输出每个元素
}
std::cout << std::endl;

4. 修改元素

  • 直接赋值:通过下标或迭代器修改元素的值。
std::vector<int> vec = {1, 2, 3};
vec[1] = 10; // 将第二个元素修改为 10

  • 使用 push_back() 方法:在 vector 的末尾添加一个元素。
std::vector<int> vec = {1, 2, 3};
vec.push_back(4); // 在末尾添加元素 4

  • 使用 pop_back() 方法:移除 vector 的最后一个元素。
std::vector<int> vec = {1, 2, 3};
vec.pop_back(); // 移除最后一个元素,此时 vec 为 {1, 2}

  • 使用 insert() 方法:在指定位置插入元素。
std::vector<int> vec = {1, 2, 3};
auto it = vec.begin() + 1;
vec.insert(it, 10); // 在第二个位置插入元素 10,此时 vec 为 {1, 10, 2, 3}

  • 使用 erase() 方法:移除指定位置或指定范围的元素。
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin() + 2;
vec.erase(it); // 移除第三个元素,此时 vec 为 {1, 2, 4, 5}

auto first = vec.begin() + 1;
auto last = vec.begin() + 3;
vec.erase(first, last); // 移除第二个到第三个元素,此时 vec 为 {1, 5}

5. 获取 vector 的大小和容量

  • size() 方法:返回 vector 中元素的数量。
std::vector<int> vec = {1, 2, 3};
std::cout << "Size: " << vec.size() << std::endl; // 输出 3

  • empty() 方法:判断 vector 是否为空。
std::vector<int> vec;
if (vec.empty()) {
    std::cout << "Vector is empty." << std::endl;
}

  • capacity() 方法:返回 vector 当前分配的存储空间能够容纳的元素数量。
std::vector<int> vec = {1, 2, 3};
std::cout << "Capacity: " << vec.capacity() << std::endl;

  • reserve() 方法:为 vector 预留一定的存储空间,避免多次重新分配内存。
std::vector<int> vec;
vec.reserve(100); // 预留 100 个元素的存储空间

6. 清空 vector

  • clear() 方法:移除 vector 中的所有元素,使其大小变为 0,但容量不变。
std::vector<int> vec = {1, 2, 3};
vec.clear(); // vec 变为空,大小为 0

#机试#
考研机试常用的数据结构 文章被收录于专栏

考研机试常用的数据结构

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务