当前位置:首页 C++ > 正文

vector<vector<int>> 到底是个啥?一句话讲明白

作者:野牛程序员:2026-04-07 08:44:30 C++阅读 1984
vector> 到底是个啥?一句话讲明白

vector<vector<int>> 到底是个啥?一句话讲明白

第一次看到这种写法,很容易懵:

vector<vector<int>> v;

其实不用想复杂,把它拆开就行。


先从最里面看

vector<int>

这是一个“一维数组”,可以理解成一行数据:

[1, 2, 3]

再往外看一层

vector< vector<int> >

意思就是:

👉 这个 vector 里面装的,不是整数,而是“一个个一维数组”

换句话说:

👉 “数组里面套数组”


用更直白的话说

vector<vector<int>> = 多个 vector<int> 组成的集合

也可以理解成:

👉 一张“表”


举个具体例子

vector<vector<int>> v = {
   {1, 2, 3},
   {4, 5, 6},
   {7, 8, 9}
};

内存结构可以这样想:

第0行 → [1, 2, 3]
第1行 → [4, 5, 6]
第2行 → [7, 8, 9]

访问方式:

v[行][列]

比如:

v[1][2]  // 第2行第3个 → 6

为什么会有两个 >>

很多人看到这里会疑惑:

vector<vector<int>>

为什么是两个 >

因为:

  • 外层 vector< ... >

  • 里面的类型是 vector<int>

所以写成:

vector< vector<int> >

后来 C++11 之后可以直接写:

vector<vector<int>>

和二维数组的关系

这个结构可以当成“动态二维数组”来用:

int a[3][4];            // 固定
vector<vector<int>> v;  // 可变

区别是:

  • 数组:大小固定

  • vector:可以随时扩展


一个非常关键的理解

vector<vector<int>> 不是一整块连续二维空间

而是:

每一行是一个独立的 vector

也就是说:

vector<vector<int>> v = {
   {1, 2},
   {3, 4, 5},
   {6}
};

完全合法。

每一行长度可以不一样。


常见操作

添加一行

v.push_back({1, 2, 3});

添加某一行的元素

v[0].push_back(4);

遍历

for (int i = 0; i < v.size(); i++) {
   for (int j = 0; j < v[i].size(); j++) {
       cout << v[i][j] << " ";
   }
   cout << endl;
}


用一句话总结

vector<vector<int>> 就是“可以动态变化的二维数组”

再通俗一点:

👉 外层是“行”
👉 内层是“每一行的数据”


最后换个比喻

可以把它想成:

👉 一个“文件夹”,里面每个文件夹里又有一排文件

  • 外层:大文件夹(多行)

  • 内层:小文件夹(每一行)


理解到这个程度,再看到这种写法,就不会觉得奇怪了。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • vector<vector<int>> 到底是个啥?一句话讲明白
  • 相关推荐

    最新推荐

    热门点击