C++ - 在STL向量中操作对象?

Ash*_*iya 0 c++ memory pointers stl vector

我有这样的结构:

struct Rz3DContourNode {
  float x;
  float y;
  float z;
  float nx;
  float ny;
  float nz;
};
Run Code Online (Sandbox Code Playgroud)

我将元素存储在STL向量中,如下所示:

 std::vector < Rz3DContourNode >  nodes;
Run Code Online (Sandbox Code Playgroud)

现在我想更改vector中节点的nx,ny compoent.我尝试如下:

*(&nodes[i].nx)=newNXValue;
*(&nodes[i].ny)=newNYValue;
*(&nodes[i].nz)=newNZValue;
Run Code Online (Sandbox Code Playgroud)

这不起作用.是因为nodes [i]返回对象的副本?

使用指针有什么解决方案吗?

我不能使用指针(Rz3DContourNode*),因为我在OpenGL中使用此向量作为

glNormalPointer(GL_FLOAT,sizeof(Rz3DContourNode), &nodes[0].nx);
Run Code Online (Sandbox Code Playgroud)

编辑 - 对不起.我实际上每次都保留一个QList并获取std :: vector.这就是原因

std::vector<Rz3DContourNode> nodeVector = nodes.toVector().toStdVector();
Run Code Online (Sandbox Code Playgroud)

Cha*_*esB 11

为什么要用指针打扰?该[]操作符返回引用存储的对象,这样你就可以这样做

nodes[i].nx = newNXValue;
nodes[i].ny = newNYValue;
nodes[i].nz = newNZValue;
Run Code Online (Sandbox Code Playgroud)