复制向量

时间:2016-03-30 16:44:10

标签: c++ glm-math

我想复制类型为std::vector <glm::vec3> example的向量的y分量,因为我不能通过执行类似example.size().y...的操作来访问此向量的y分量。所以,我假设我必须将y组件的内容复制到另一个矢量/数组,但有没有办法做到这一点?我想的是:

std::vector <int> something;

    for (int i = 0; i < example.size(); i++)
    {
        something[i] = example[i].y;
    }

但它显然不起作用。

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要确保向量的大小与您推入的元素一起增长。 []运算符只是一个访问者。

std::vector <int> something;
something.resize(example.size());

for (int i = 0; i < example.size(); i++)
{
    something[i] = example[i].y;
}

答案 1 :(得分:0)

std::vector <int> something;

for (int i = 0; i < example.size(); i++)
{
    something[i] = example[i].y;
}

两个问题:

  1. glm::vec3是浮点类型,example[i].y将返回浮点值。如果这些是规范化的模型顶点,则它们很可能都在[-1,1]范围内,这意味着始终会为something[i]-1或{{0分配1 1}}。
  2. something从未在您提供的代码段中初始化其内存。这将导致运行时崩溃。你应该写像
  3. 这样的东西

    std::vector<float> something(example.size());