C ++向量不插入

时间:2015-01-19 17:57:53

标签: c++ vector

我有以下

std::vector<Cube> well = vector<Cube>();
createCube(well, x, y, z, id);

稍后我尝试将Cube插入到这样的矢量中,

void Viewer::createCube(std::vector<Cube> vec, int x, int y, int z, int id) {
    float rgb[] = {0.0f, 0.0f, 1.0f};
    vec.push_back(Cube(QMatrix4x4(), -1));
    int loc = vec.size() - 1;
    std::cout << "loc:" << loc << std::endl;
    vec.at(vec.size() - 1).matrix.translate(x,y,z);
}

我得到输出loc = 0。

为什么它不是我的Vector的新Cube?

1 个答案:

答案 0 :(得分:6)

您将按值传递给createCube函数;这意味着您的矢量被复制,然后该元素被添加到新的矢量而不是原始矢量。您可以通过将方法签名更改为:

来解决此问题
void Viewer::createCube(std::vector<Cube>& vec, int x, int y, int z, int id)