有没有办法让这些类似的功能变得高效? [重复]

问题描述 投票:0回答:1

我正在组织一些数据,存储在结构中,存储在向量中。我有两个几乎相同的排序函数,我想知道是否有一种有效的方法来编写它们。这些函数之间的唯一区别是每个函数访问的变量。

基本上看起来像这样:

for(int x = 0; x < data.size()-1; x++)
        for(int y = 0; y < data.size()-x-1; y++)
            if(data.at(y).one > data.at(y+1).one)
            {
                temp = data.at(y);
                data.at(y) = data.at(y+1);
                data.at(y+1) = temp;
            }

for(int x = 0; x < data.size()-1; x++)
        for(int y = 0; y < data.size()-x-1; y++)
            if(data.at(y).two > data.at(y+1).two)
            {
                temp = data.at(y);
                data.at(y) = data.at(y+1);
                data.at(y+1) = temp;
            }

我不确定是否可以使用模板,因为变量类型都是整数。我可以复制并粘贴每个函数,但大约有 10 个函数。

c++ function sorting
1个回答
1
投票

您可以利用

std::ranges::sort
轻松地通过对象的成员进行排序。对于使用小于比较的标准排序,它看起来像

std::ranges::sort(container, {}, &class_name::member_name);

如果您想使用大于运算符,只需将其更改为

std::ranges::sort(container, std::ranges::greater{}, &class_name::member_name);
© www.soinside.com 2019 - 2024. All rights reserved.