在 C++ 中,std::vector 是一种动态数组,可以用来存储任意类型的元素,并且其大小在运行时是可变的。使用 std::vector 创建二维数组是一种常见的做法,特别是当你不知道数组的具体大小或需要动态变化时。接下来,我们将详细介绍如何操作二维 vector,包括创建、访问、插入、删除以及其他常见操作。

一、二维 vector 的创建

首先,我们需要包括头文件并创建一个二维 vector。我们可以通过嵌套 vector 来创建一个二维数组。

#include <iostream>
#include <vector>

int main() {
    // 创建一个 3x4 的二维 vector,初始值为 0
    std::vector<std::vector<int>> vec(3, std::vector<int>(4, 0));

    // 输出二维 vector 的初始值
    for (const auto& row : vec) {
        for (int val : row) {
            std::cout << val << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}

二、访问元素

我们可以使用下标操作符来访问二维 vector 中的元素。访问时注意要确保下标在范围内,以避免越界错误。

int main() {
    std::vector<std::vector<int>> vec(3, std::vector<int>(4, 0));

    // 赋值
    vec[0][1] = 5;
    vec[2][3] = 10;

    // 访问
    std::cout << "vec[0][1]: " << vec[0][1] << std::endl;
    std::cout << "vec[2][3]: " << vec[2][3] << std::endl;

    return 0;
}

三、插入元素

可以使用 push_back 方法向二维 vector 添加新行,或者使用 insert 方法向特定位置插入元素。

int main() {
    std::vector<std::vector<int>> vec;

    // 添加新行
    vec.push_back(std::vector<int>{1, 2, 3});
    vec.push_back(std::vector<int>{4, 5, 6});

    // 插入元素
    vec[1].insert(vec[1].begin() + 1, 99); // 在第二行第二列插入 99

    // 输出
    for (const auto& row : vec) {
        for (int val : row) {
            std::cout << val << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}

四、删除元素

删除元素可以使用 pop_back 方法删除最后一行,或使用 erase 方法删除指定位置的元素。

int main() {
    std::vector<std::vector<int>> vec = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

    // 删除最后一行
    vec.pop_back();

    // 删除第二行中的第二个元素
    vec[1].erase(vec[1].begin() + 1);

    // 输出
    for (const auto& row : vec) {
        for (int val : row) {
            std::cout << val << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}

五、其他常见操作

  1. 获取行列大小:可以使用 size() 方法获取行数和列数。
  2. 清空 vector:使用 clear() 方法可以清空 vector 中的元素。
  3. 遍历二维 vector:使用范围for循环可以方便地遍历二维 vector
int main() {
    std::vector<std::vector<int>> vec = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

    // 获取行列大小
    std::cout << "行数: " << vec.size() << std::endl;
    std::cout << "列数: " << vec[0].size() << std::endl;

    // 遍历二维 vector
    for (const auto& row : vec) {
        for (int val : row) {
            std::cout << val << " ";
        }
        std::cout << std::endl;
    }

    // 清空
    vec.clear();
    std::cout << "清空后行数: " << vec.size() << std::endl;

    return 0;
}

通过上述示例,我们可以看到简单易用的 std::vector 为我们提供了一个灵活的方式来处理二维数组。它的动态性质使得程序能够更方便地管理存储结构,适合各种复杂度的应用场景。希望本文能帮助你更好地理解 C++ 中二维 vector 的使用!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部