【发布时间】:2011-11-10 11:05:16
【问题描述】:
我有这样的结构:
struct Rz3DContourNode {
float x;
float y;
float z;
float nx;
float ny;
float nz;
};
我将元素存储在 STL 向量中,如下所示:
std::vector < Rz3DContourNode > nodes;
现在我想改变向量中节点的 nx,ny 分量。我尝试如下:
*(&nodes[i].nx)=newNXValue;
*(&nodes[i].ny)=newNYValue;
*(&nodes[i].nz)=newNZValue;
这不起作用。是因为nodes[i]返回了对象的副本吗?
有没有使用指针的解决方案?
我不能使用指针 (Rz3DContourNode*) ,因为我在 OpenGL 中使用这个向量作为
glNormalPointer(GL_FLOAT,sizeof(Rz3DContourNode), &nodes[0].nx);
编辑 - 对不起。我实际上保留了一个 QList 并每次都获取 std::vector。这就是原因
std::vector<Rz3DContourNode> nodeVector = nodes.toVector().toStdVector();
【问题讨论】:
-
nodes[i]不返回对象的副本,您可以发布一些失败的代码吗?*(&nodes[i].nx)=newNXValue;可以/应该简化为nodes[i].nx = newNXValue;。 -
谢谢,我每次都得到向量的副本。这就是原因。
标签: c++ memory pointers stl vector