用c ++分隔向量的列

时间:2016-12-16 03:15:11

标签: c++ arrays vector

我有一个2d的字符串向量,需要将三个列隔离成3个独立的1d数组,这样我就可以将它们转换为双精度并对它们执行操作。

只需使用:

for (int i = 0; i < 100; i++)
        {
            vectorname[i][2] = arrayname[i];
        }

不起作用,我不明白为什么。

很抱歉我是新编码并提前致谢。

感谢第一个回复,我不在乎我是否删除了数据,我只是需要它以便我可以对它进行操作,我的向量被声明为:

string vectorname[101][5];


string arrayname[99];
string arrayname2[99];
string arrayname3[99];

好的我没有将vectorname定义为矢量,它只是一个2d字符串,我能从中提取一列吗?

1 个答案:

答案 0 :(得分:0)

列是否仍然需要保留在2D矢量中,还是作为独立数据完全拉出来?

如果您需要独立数据,我会这样做

vector<double> col(vectorname[i]);

然后根据需要操纵col。如果你不再需要2D矢量中的数据,你甚至可以移动构造。

我认为你在其他地方遇到了实际的逻辑问题。向我们展示你的矢量声明。

编辑:什么......?你根本没有宣布载体。您正在使用纯数组。并且2D阵列不应该被称为矢量。你将其他程序员与你的名字方案混为一谈。

声明字符串向量的正确方法是

std::vector<string> vectorname(100);

字符串矢量向量(2D向量)是

std::vector<std::vector<string>(5)> vectorname(101);

但此外,您的尺寸不匹配。您的1D向量需要与2D的给定维度相同,或者在这种情况下为5(101?)。

如果您尝试沿值的第一维复制值,则没有直接构造函数。您必须手动循环从0到100并说

arrayname[i] = vectorname[i][n];

其中n是您的列号。