다음과 같이 구조가 있습니다 :STL 벡터에서 개체를 조작?
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;
이 작동하지 않았다. 노드 [i] 개체 복사본을 반환하기 때문에 때문입니까?
포인터를 사용하여 예상되는 모든 솔루션이 있습니까?
편집 - 미안 해요. 실제로 QList 유지하고 std :: vector 얻을 때마다 벡터를 사용하여 포인터 (Rz3DContourNode *), 사용할 수 없습니다. 그것이 이유였습니다
std::vector<Rz3DContourNode> nodeVector = nodes.toVector().toStdVector();
'노드가 [내가]'개체의 복사본을 반환하지 않습니다 당신이 게시 할 수 : 그래서이
여기
로 대체 내가 노력 코드 샘플입니다 일부 실패한 코드? '* (& nodes [i] .nx) = newNXValue;'는 노드 [i] .nx = newNXValue;로 간략화 될 수 있어야한다. –
고마워, 매번 벡터 복사본을 얻고 있었어. 그게 이유야. –