如何在 C++ 中实现像 属性 这样的命名参数

how to implement named parameter like property in c++

我在 class 数组中有一个排序函数,想实现类似于 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;
}

只需提供此重载:

void bubble_sort(std::function<bool<int, int>> cmp) {
    ...
                    if(cmp(arr[j], arr[j+1])){
                        std::swap(arr[j], arr[j+1]);
                    }
    ...
}

void bubble_sort(bool rev = false)
{
    bubble_sort(rev ? std::greater<int>{} : std::less<int>{});
}

注意c++是静态类型语言,所以重载可以通过参数类型来区分。