我的結構是這樣的:C++ - 操縱STL向量中的對象?
struct Rz3DContourNode {
float x;
float y;
float z;
float nx;
float ny;
float nz;
};
我存儲在一個STL向量元素如下:
std::vector <Rz3DContourNode> nodes;
現在我想改變NX,在矢量節點紐約compoent。我嘗試如下:
*(&nodes[i].nx)=newNXValue;
*(&nodes[i].ny)=newNYValue;
*(&nodes[i].nz)=newNZValue;
這沒有工作。是因爲節點[我]返回對象的副本?
有沒有這種期望使用指針的解決方案?
我不能使用指針(Rz3DContourNode *),因爲我在OpenGL中使用該載體作爲
glNormalPointer(GL_FLOAT,sizeof(Rz3DContourNode), &nodes[0].nx);
編輯 - 我很抱歉。其實保持的QList和獲得的std ::向量每次。這就是原因
std::vector<Rz3DContourNode> nodeVector = nodes.toVector().toStdVector();
'節點[I]'不返回對象的副本,你可以發佈一些失敗的代碼? '*(&nodes [i] .nx)= newNXValue;'可以/應該簡化爲'nodes [i] .nx = newNXValue;'。 –
謝謝,我每次都得到了這個向量的副本。這就是原因。 –