【发布时间】:2020-03-12 14:58:23
【问题描述】:
嗨,我对 C++ 和编程很陌生。我正在尝试制作一个将 2D 向量转换为 1D 单行向量的函数。 不幸的是,我收到错误:“表达式必须具有指向对象的指针类型” 如果我在主函数中键入完全相同的代码而不指定函数,那么它工作正常,如果我想创建一个函数似乎只是不工作。代码如下:
std::vector<float> onelinevector(std::vector<std::vector<float>> invector, int column){
int vsize = (int) invector.size() * column;
std::vector<float> v1d(vsize);
std::cout << "Creating 1D Vector:\n"<< "Inputvector Size: " << invector.size() << "Rows " << column << " Columns" << std::endl;
int k = 0;
for (int i = 0; i<invector.size(); i++) {
for (int j = 0; j<column ; j++) {
v1d[k] = invector[i][j];
k++;
}
}
return v1d;
}
这是导致错误的行:
v1d[k] = invector[i][j];
我希望你能帮助我。
【问题讨论】:
-
这个表达式无效:
invector[i][j]因为invector[i]返回一个float,你不能在它上面调用[]操作符。 -
您的代码中没有二维向量?我假设
invector应该是向量的向量? -
@vahancho 我仍然不明白我想在输入向量的每一行和每一列之间进行迭代并将其分配给新的单行向量 v1d。这就是为什么我使用输入向量的索引并在 for 循环中遍历 for 循环,外部循环用于行,内部循环用于列索引。你能为菜鸟解释一下吗?
-
@emlai invector 应该是二维向量,例如:std::vector
inputvector = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };