如何定义二维向量哪些行是已知的c ++

How to define 2D vector which rows are known c++

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

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

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

如果我没理解错的话,你想要的似乎是一个向量数组。您可以设置一个向量数组,例如 vector<string> myArray[3];,然后将值推入 myArray[0]myArray[1]

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

vector< vector < int > > rows;

如果您知道可以写入的最大行数,则必须填充它:

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

您使用 rows[i].push_back(...); 附加到行的末尾。行从 0 开始编号(如果要从 1 开始,请在 MAX 中加 1)。

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

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

如果您尝试将元素索引 i 从行 B 推入行 A 的元素索引 i,请尝试类似的操作。 tiesiogiaiJungiasi[A].push_back(tiesiogiaiJungiasi[B][i]);

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

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