我正在组织一些数据,存储在结构中,存储在向量中。我有两个几乎相同的排序函数,我想知道是否有一种有效的方法来编写它们。这些函数之间的唯一区别是每个函数访问的变量。
基本上看起来像这样:
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 个函数。
std::ranges::sort
轻松地通过对象的成员进行排序。对于使用小于比较的标准排序,它看起来像
std::ranges::sort(container, {}, &class_name::member_name);
如果您想使用大于运算符,只需将其更改为
std::ranges::sort(container, std::ranges::greater{}, &class_name::member_name);