C++ 对自定义类的向量进行排序不需要';t正确地迭代向量

C++ 对自定义类的向量进行排序不需要';t正确地迭代向量,c++,class,sorting,graphics,iteration,C++,Class,Sorting,Graphics,Iteration,我正在尝试为渲染分配实现一个画家排序算法。代码的前提是,我需要找到多边形的平均深度,以及通过for循环指定给它们的深度得到的多边形列表 这是多边形声明,以及用于计算多边形深度的多边形后变换顶点的集合 std::vector\u多边形; std::vector_transvertexts; 这是模型类调用的方法,用于使用std::sort对_多边形向量进行排序 void模型::Sort() { 对于(int i=0;i rhs.GetDepth(); } 问题是,一旦排序算法开始,lhs和rh

我正在尝试为渲染分配实现一个画家排序算法。代码的前提是,我需要找到多边形的平均深度,以及通过for循环指定给它们的深度得到的多边形列表

这是多边形声明,以及用于计算多边形深度的多边形后变换顶点的集合

std::vector\u多边形;
std::vector_transvertexts;
这是模型类调用的方法,用于使用std::sort对_多边形向量进行排序

void模型::Sort()
{
对于(int i=0;i rhs.GetDepth();
}
问题是,一旦排序算法开始,lhs和rhs的值永远不会改变-lhs的深度始终为0(进一步查看其分配,它似乎正在创建一个全新的多边形?),rhs的值始终为30.53(多边形顶点中第一个多边形的深度)

我担心问题可能在于没有一种形式的迭代器链接到Polygon3D类,但我不知道从哪里开始为该类创建迭代器

任何帮助都将不胜感激,我已经研究了太多类似的问题,但没有一个对我的特定问题是完全正确的

编辑:

帖子被删除了,因为我显然没有提供足够的代码。我试图在另一个项目中重现这个问题,但由于某种原因,它在那里迭代得很好

这是我尝试过的“尽可能短的复制品”,但由于某些原因,这似乎与原作没有相同的问题

#包括
#包括
类Polygon3D
{
公众:
Polygon3D();//用于测试的示例数据
float GetDepth()常量;
空隙设置深度(浮动深度);
私人:
浮子深度平均值;
};
类模型
{
公众:
模型();
大小\u t GetPolygonCount()常量;
无效排序();
私人:
std::向量_多边形;
std::向量_顶点;
std::vector_transvertexts;
};
Polygon3D::Polygon3D()
{
//_深度平均值=浮动(rand()%100);
}
浮点多边形3D::GetDepth()常量
{
收益率(depthAverage);;
}
void Polygon3D::设置深度(浮动深度)
{
_深度平均=深度;
}
模型::模型()
{
对于(int i=0;i<10;i++)
{
_polygons.push_back(Polygon3D());
}
这个->排序();
}
大小\u t模型::GetPolygonCount()常量
{
返回_polygons.size()-1;
}
bool sortByDepth(常数多边形3D和左侧、常数多边形3D和右侧)
{
float m=lhs.GetDepth();
float n=rhs.GetDepth();
返回lhs.GetDepth()>rhs.GetDepth();
}
void模型::Sort()
{

对于(int i=0;i我自己的回答是非常愚蠢的。问题是Polygon3D类中使用的复制构造函数-我忘了在复制构造函数中复制深度值,这意味着lhs没有获得深度值。

我欢迎堆栈溢出!请用or来回答您的问题可能编译器将
std::sort
与您定义的
sort
混淆?排序前是否检查深度是否正确?您有多少个多边形?还有循环设置深度应为
i
。作业针对学校-我已被指示进行GetPolygonCount()方法并使用std::sort方法,所以我不能只编写自己的排序方法来解决这个问题。我检查了,但是std::sort肯定是正在使用的方法。