我对这段代码有疑问(cubeBoxData 是一组 cubeBox):
cubeBox temp(bx,by,bz);
cubeBoxData.insert(temp);
set<cubeBox>::iterator i = cubeBoxData.find(temp);
const_cast<cubeBox&>(*i).addCube(x,y,z);
问题是 cubeBoxData.find(temp); 没有找到 temp,然后程序尝试调用 addCube() 失败,我不知道为什么,因为这段代码工作正常(只需更改第三行):
cubeBox temp(bx,by,bz);
cubeBoxData.insert(temp);
set<cubeBox>::iterator i = find(cubeBoxData.begin(),cubeBoxData.end(),temp);
const_cast<cubeBox&>(*i).addCube(x,y,z);
cubeBox 的运算符 < 是:
bool operator<(const cubeBox& c) const {
return x<c.x ? true : y<c.y ? true : z<c.z ? true : false;
}
addCube 不会改变 x、y 或 z。
我认为我的 operator< 是错误的,我错过了一些愚蠢的东西,但我不知道它是什么。