21xrx.com
2024-09-19 23:54:26 Thursday
登录
文章检索 我的文章 写文章
C++二维vector的创建方法
2023-06-28 01:27:08 深夜i     --     --
C++ 二维vector 创建方法

C++中的std::vector是一个非常常用的STL容器,它的优点在于可以动态增加容器大小,通过resize()和push_back()方法可以方便的向vector中添加元素,比起C-style数组尤为方便。

在实际应用中,我们可能需要使用二维的vector来存储数据。创建二维vector其实也很简单,下面介绍两种创建方法。

方法一:


std::vector<std::vector<int>> vec_2d;

这种方法直接定义了一个二维vector,其中第一维的元素类型是std::vector ,即int类型的一维vector。此时vec_2d是一个空的vector,我们可以通过resize()方法来确定vector的大小。


vec_2d.resize(row_num, std::vector<int>(col_num));

其中row_num是vector的行数,col_num是vector的列数。这里会在第一维上resize()行数,然后在第二维上对每一行resize()列数,最终得到一个大小为row_num * col_num的二维vector。如果不需要指定初始值,还可以使用下面的方法:


std::vector<std::vector<int>> vec_2d(row_num, std::vector<int>(col_num));

方法二:

有时候我们会使用一个一维的vector来模拟二维vector。我们可以将一维vector拆分成多个子vector,每个子vector存储一行数据,其元素类型是int或其他数据类型。定义如下:


std::vector<int> vec_1d(row_num * col_num); //定义一维vector

std::vector<std::vector<int>> vec_2d(row_num, std::vector<int>(col_num)); //定义二维vector

for (int i = 0; i < row_num; ++i) {

  for (int j = 0; j < col_num; ++j) {

    vec_2d[i][j] = vec_1d[i * col_num + j];

  }

}

这里定义了一个一维vector vec_1d,并通过i * col_num + j的方式将二维下标(i, j)转化为一维下标,然后再将vec_1d中的元素赋值给二维vector vec_2d中对应的位置。

使用二维vector在处理二维数据时非常方便,只需要注意vector的行列顺序即可。这里介绍的是二维vector的创建方法,更多关于vector的使用技巧可以自行学习。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复