矢量是否正确?

时间:2013-12-23 07:36:31

标签: c++ vector multidimensional-array

我想创建16个vecotr

vector<int> queue[16]

同时,我想在16个向量中创建3个队列

所以我想如果我像这样编写这段代码

vector<int> queue[16][3]

这个描述准确吗?

我试过了。但是想检查代码是否基本正确?

请帮助我!

1 个答案:

答案 0 :(得分:2)

要创建一个初始化为16个元素的std::vector<int>,您需要说:

std::vector<int> queue(16);

16queue的参数说初始化向量有16个元素。因此,这将创建向量并初始化它以容纳16个元素。您可以随时调整std::vector的大小,因此并不总是需要预先调整大小。

元素将根据类型初始化为默认值。在这种情况下,它们将初始化为0.如果要初始化为其他值,请将其指定为第二个参数:

std::vector<int> queue(16, 42);  // 16 elements with the value 42.

要创建二维向量,您需要声明一个向量的向量向量。这有点棘手。这声明它没有设置它的大小:

std::vector< std::vector< int > > queue;

要将此初始化为16 x 3二维矢量矢量,以下语法将执行您想要的操作:

std::vector< std::vector< int > > queue( 16, std::vector<int>(3) );

在初始化中有一些进展:

  • queue的第一个参数是初始化外部向量的大小。那是16岁。
  • 第二个参数是将这些元素初始化为的值。在这种情况下,我们提供了一个std::vector<int>,它已被初始化为包含3个元素。此匿名vector<int>复制到外部向量中的16个元素中。

结果是一个2-D矢量矢量的int,其第一(外)尺寸为16,第二(内)尺寸为3。

现在,所有这一切,16x3向量矢量的int不太可能有效。您可以考虑创建一个结构或使用std::tuple将3个值捆绑在一起,并创建 的向量,这样您就可以保留为1-D向量。

变量queue的名称表明您正在构建值队列。如果符合您的目的,您可能会考虑使用std::queue