【发布时间】:2021-02-07 18:36:22
【问题描述】:
我在类 Array 中有一个排序函数,并希望在 python sort(reverse=True) 中实现类似的功能。我想告诉用户他们可以传递这个参数,因为现在arr.bubble_sort(true);(检查代码)没有多大意义。我不希望 lambda 函数知道如何实现这一点。
任何其他方法也有效,因为我知道命名参数在 c++ 中可能不存在。
PS:顺便说一下,我已经超载了它。
问候,
// inside class Array
void bubble_sort(bool rev){ //overloaded bubble_sort
if(rev){
int i,j;
for(i=0; i<size-1; i++){
for(j=0; j<size-i-1; j++){
if(arr[j] < arr[j+1]){
std::swap(arr[j], arr[j+1]);
}
}
}
}
else{
int i,j;
for(i=0; i<size-1; i++){
for(j=0; j<size-i-1; j++){
if(arr[j] > arr[j+1]){
std::swap(arr[j], arr[j+1]);
}
}
}
}
}
int main()
{
int n;
std::cin >> n;
Array arr(n); // parameterized constructor initializing array of size n
arr.bubble_sort(true);
arr.print();
return 0;
}
【问题讨论】:
-
在c++中没有像命名参数这样的功能。
-
不,您没有重载
bubble_sort,至少在您显示的代码中没有。但重载它将是一个优雅的解决方案。或为rev使用默认值。 -
这里可以使用一些编译时参数+
if constexpr来避免代码重复。 -
你有什么理由使用冒泡排序而不是
std::sort? -
我不是真的只是为了学习。
标签: c++ named-parameters