【问题标题】:How to define 2D vector which rows are known c++ [duplicate]如何定义已知行的二维向量c ++ [重复]
【发布时间】:2026-01-06 19:30:01
【问题描述】:

定义二维向量的最佳方法是什么,哪些行是已知的?所以基本上,我会有这样的东西:

2 3 4
7 5 4 12 4
2 1 0 2

我会知道有多少行(实际上我只有在获得行变量后才会知道),但每个行列都会有所不同。那么最好的方法是什么? (如果可能的话,我计划在需要时推回每一行的列)

【问题讨论】:

  • “每一行列”是什么意思?
  • 嗯,我的意思是一开始,二维向量应该是这样的。第 1 行:0 第 2 行:0 第 3 行:0 第 4 行:0,但是如果,例如,我需要在第 3 行再存储一个变量,我可以推回第 3 行吗?或者这不是向量的工作方式? (我对向量完全陌生,直到今天才开始“学习”它们)

标签: c++ vector multidimensional-array


【解决方案1】:

这是有类似问题的人http://www.cplusplus.com/forum/beginner/12409/。只需定义一个向量向量即可。

它不会让我在下面评论,但在你的代码中你有tiesiogiaiJungiasi[A.at(i)] A 是什么类型,如果它是向量,那么如果不是 A.at(i) ,那么用整数填充的向量是你的问题。这将为您提供位于该位置的元素,而不是该位置本身。

如果您尝试将 B 行中的元素索引 i 推送到 A 行的元素索引 i 中,请尝试这样的操作。 tiesiogiaiJungiasi[A].push_back(tiesiogiaiJungiasi[B][i]);

假设 B 行的索引位置有一个元素。

另一个问题可能是您说行的大小可能不同。那么你应该在 for 循环中查看你的 m 参数。如果该数字大于该行中的列(元素)数,我有可能退出数组。

【讨论】:

    【解决方案2】:

    如果我理解正确,这似乎是您想要的向量数组。您可以设置一个向量数组,例如vector<string> myArray[3];,然后将值推送到myArray[0]myArray[1] 等。

    【讨论】:

      【解决方案3】:

      如果我理解正确的话。您需要一个允许您追加到每行末尾的数据结构。 vector< vector < int > > 就可以了。

      vector< vector < int > > rows;
      

      如果你知道你可以写的最大行数,你必须填充这个:

      vector< vector < int > > rows(MAX);
      

      您使用rows[i].push_back(...); 追加到行尾。行从 0 开始编号(如果要从 1 开始,请将 1 添加到 MAX)。

      【讨论】:

      • 是的,你理解正确。但是,我应该更准确。在我声明我的向量向量后,我得到了行变量。有什么办法可以只调整向量行的大小并将列保留为 0?
      • 是的,你调用了vector类的resize方法。阅读参考资料(google std::vector)。
      • 嗯。我正在尝试执行following code,但出现错误。 B 和 A 向量中的值不大于 n。我做错了什么?