如何定义2D向量哪些行是已知的c ++

时间:2015-01-14 18:03:04

标签: c++ vector multidimensional-array

定义2D矢量的最佳方法是什么?哪些行是已知的?所以基本上,我会有这样的事情:

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

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

3 个答案:

答案 0 :(得分: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参数。如果该数字大于该行中的列数(元素),则可以离开数组。

答案 1 :(得分:0)

如果我理解正确,这看起来像你想要的是一组矢量。您可以设置vector<string> myArray[3];之类的向量数组,然后将值推送到myArray[0]myArray[1]等。

答案 2 :(得分:0)

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

vector< vector < int > > rows;

如果您知道可写的最大行数,则必须填充此内容:

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

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