我有一个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字符串,我能从中提取一列吗?
答案 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是您的列号。