List 在C++;
我有一个point3结构,它接受3个浮点x,y,z(三维空间坐标) 我正试图编写一个函数来转换点列表中每个元素的x,y,z值List 在C++;,list,iterator,List,Iterator,我有一个point3结构,它接受3个浮点x,y,z(三维空间坐标) 我正试图编写一个函数来转换点列表中每个元素的x,y,z值 我是C++新手,所以我不认为我正确地写了迭代器,有人能帮助说明如何迭代列表和修改列表中每个元素的组件吗? 我看了这篇文章,认为这回答了我的问题,但解决方案不起作用 这是我的密码: //Translates the face by dx, dy, dz coordinates list<point3> translateFace(list<point3&g
我是C++新手,所以我不认为我正确地写了迭代器,有人能帮助说明如何迭代列表和修改列表中每个元素的组件吗? 我看了这篇文章,认为这回答了我的问题,但解决方案不起作用
这是我的密码://Translates the face by dx, dy, dz coordinates
list<point3> translateFace(list<point3> lop, float dx, float dy, float dz)
{
list<point3>::iterator iter;
for (iter = lop.begin() ; iter != lop.end(); iter++){
iter->x - dx;
iter->y - dy;
iter->z - dz;
}
return lop;
}
在我看来,您实际上并没有存储计算结果:
for (iter = lop.begin() ; iter != lop.end(); iter++){
iter->x - dx;
iter->y - dy;
iter->z - dz;
}
试试这个:
for (iter = lop.begin() ; iter != lop.end(); iter++){
iter->x -= dx;
iter->y -= dy;
iter->z -= dz;
}
我希望大多数编译器会对这样一个未使用的计算发出警告——如果可以,请在编译器上打开警告级别。在我看来,您实际上并没有存储计算结果:
for (iter = lop.begin() ; iter != lop.end(); iter++){
iter->x - dx;
iter->y - dy;
iter->z - dz;
}
试试这个:
for (iter = lop.begin() ; iter != lop.end(); iter++){
iter->x -= dx;
iter->y -= dy;
iter->z -= dz;
}
我希望大多数编译器会对这样一个未使用的计算发出警告——如果可以,请在编译器上提高警告级别。让我们看看:
list<point3> translateFace(list<point3> lop, float dx, float dy, float dz)
{
list<point3>::iterator iter;
for (iter = lop.begin() ; iter != lop.end(); iter++){
(*iter).x -= dx;
(*iter).y -= dy;
(*iter).z -= dz;
}
return lop;
}
列表平移(列表lop、浮点dx、浮点dy、浮点dz)
{
迭代器iter;
对于(iter=lop.begin();iter!=lop.end();iter++){
(*iter).x-=dx;
(*iter).y-=dy;
(*iter).z-=dz;
}
返回lop;
}
应该是正确的选项,假设您知道在执行此操作时,您正在创建lop参数的本地副本,然后将其返回并移动(C++0x)或复制(C++03)到要将其设置为的任何变量中。例如(假设point3需要3个浮点数来构造):
point3点(0.0,0.3,0.5);
列表面;
面=平移(列表(点),-0.5,--3.32,-7.5);
应导致面包含一个仅包含点的列表,坐标为-5、-3.02和-7.0。让我们看看:
list<point3> translateFace(list<point3> lop, float dx, float dy, float dz)
{
list<point3>::iterator iter;
for (iter = lop.begin() ; iter != lop.end(); iter++){
(*iter).x -= dx;
(*iter).y -= dy;
(*iter).z -= dz;
}
return lop;
}
列表平移(列表lop、浮点dx、浮点dy、浮点dz)
{
迭代器iter;
对于(iter=lop.begin();iter!=lop.end();iter++){
(*iter).x-=dx;
(*iter).y-=dy;
(*iter).z-=dz;
}
返回lop;
}
应该是正确的选项,假设您知道在执行此操作时,您正在创建lop参数的本地副本,然后将其返回并移动(C++0x)或复制(C++03)到要将其设置为的任何变量中。例如(假设point3需要3个浮点数来构造):
point3点(0.0,0.3,0.5);
列表面;
面=平移(列表(点),-0.5,--3.32,-7.5);
应导致面包含一个仅包含点的列表,坐标为-5、-3.02和-7.0。您是对的,非常感谢!我不知道为什么我的编译器没有说什么,但我会调整设置!你说得对,非常感谢!我不知道为什么我的编译器没有说什么,但我会调整设置!“我是C++新手”,如果你是C++新手,图形编程不是我要开始的地方。我没有说我是图形编程新手,只是我是C++新手。即使你擅长其他语言的图形,它仍然不是学习C++的好地方。不是一年后重要,而是告诉别人。“这不是一个好的开始”,你应该把你的能量传递给我,哦,我不知道,实际上帮助他们。如果你看一看被接受的答案,你会发现我犯了一个小错误,对语言来说是新的。我的问题与图形编程的复杂性无关。“我对C++是新的。如果你是C++新手,图形编程不是我要开始的地方。我没有说我是图形编程新手,只是我对C++是新的。即使你擅长其他语言的图形,它仍然不是学习C++的好地方。不是一年后它很重要,而是告诉人们“这不是一个好的开始”。你应该把精力放在,哦,我不知道,真正帮助他们。如果你看一眼被接受的答案,你会发现我犯了一个小错误,因为我对这门语言还不熟悉。我的问题与图形编程的复杂性无关。