gpt4 book ai didi

c++ - 使用列表迭代器排序

转载 作者:太空宇宙 更新时间:2023-11-04 15:50:04 25 4
gpt4 key购买 nike

问题: 我有一个我想在每个周期渲染的对象列表,但我想按照它们可变的 y 位置的顺序渲染它们。

这是我的列表声明...

std::list<Object *> objects;
std::list<Object *>::iterator iter;
std::list<Object *>::iterator iter2;

这是我目前所拥有的...

for(iter = objects.begin(); iter != objects.end(); ++iter) //goes through my objs
if((*iter)->GetID() == PLAYER || (*iter)->GetID() == ENEMY) //only part of the list
for(iter2 = iter; iter2 != objects.end(); ++iter2) //goes through the same objs
if((*iter2)->GetID() == PLAYER || (*iter2)->GetID() == ENEMY) //same as line 2
if((*iter)->GetY() > (*iter2)->GetY())

我想按 y 值的降序渲染对象。我想我真正的问题是如何对这个列表进行排序。

最佳答案

std::list 有一个排序函数,您可以将比较器传递给该函数,因此可以这样写:

bool compareByGreaterY(const Object * lhs, const Object * rhs)
{
return lhs->GetY() > rhs->GetY();
}

然后你可以像这样对列表进行排序:

objects.sort(compareByGreaterY);

关于c++ - 使用列表迭代器排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10039018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com