隔离C 中向量的一列

Isolate a column of a vector in c++

本文关键字:一列 向量 隔离      更新时间:2023-10-16

i有一个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];

好吧,我没有将矢量定义为向量,它只是一个2D字符串,我可以从中提取一列吗?

列仍需要保留在2D向量中,还是完全作为独立数据将其拉出?

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

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

然后根据需要操纵Col。如果您不再需要2D向量中的数据,甚至可以进行移动构造。

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

编辑:什么...?您根本没有宣布向量。您正在使用纯数组。2D数组不应称为向量。您将其他程序员与您的姓名方案感到困惑。

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

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

和字符串向量(2D向量)的向量为

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

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

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

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

其中n是您的列号。