struct Object {
int16_t order = 0;
};
我有一个Object实例的std :: list,我想根据“ order”成员变量对其进行排序。
我正在寻找一种算法,该算法可以使列表以最少的迭代次数或类似的次数排序。我现在采用的一种幼稚方法导致三角形的迭代次数,对于1024是: (1024(1024 + 1))/ 2 = 524,288
答案 0 :(得分:1)
使用成员排序方法-std::list::sort
和适当的比较器:
int main() {
std::list<Object> objects{
Object{4}, Object{2}, Object{6}, Object{7}, Object{42}
};
objects.sort([](const auto& lhs, const auto& rhs) {
return lhs.order < rhs.order;
});
}