Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在c++;_C++_Named Parameters - Fatal编程技术网

C++ 如何在c++;

C++ 如何在c++;,c++,named-parameters,C++,Named Parameters,我在类数组中有一个排序函数,希望在python中实现类似于排序(reverse=True)的功能。我想向用户展示他们可以传递这个参数,因为现在arr.bubble\u sort(true)(检查代码)没有多大意义。我不想让lambda函数知道如何实现这一点。 其他方法也适用,因为我知道C++中的命名参数可能不存在。 顺便说一句,我已经超载了。 问候, //类内数组 无效冒泡排序(bool rev){//重载冒泡排序 如果(修订版){ int i,j; 对于(i=0;i只需提供以下重载: voi

我在类数组中有一个排序函数,希望在python中实现类似于排序(reverse=True)的功能。我想向用户展示他们可以传递这个参数,因为现在
arr.bubble\u sort(true)(检查代码)没有多大意义。我不想让lambda函数知道如何实现这一点。
其他方法也适用,因为我知道C++中的命名参数可能不存在。 顺便说一句,我已经超载了。
问候,


//类内数组
无效冒泡排序(bool rev){//重载冒泡排序
如果(修订版){
int i,j;

对于(i=0;i只需提供以下重载:

void bubble\u排序(std::function cmp){
...
if(cmp(arr[j],arr[j+1])){
标准::交换(arr[j],arr[j+1]);
}
...
}
无效气泡_排序(bool rev=false)
{
气泡排序(rev?std::greater{}:std::less{});
}

注意C++中是静态类型语言,因此重载可以通过参数类型来区分。

< P>只提供这个重载:

void bubble\u排序(std::function cmp){
...
if(cmp(arr[j],arr[j+1])){
标准::交换(arr[j],arr[j+1]);
}
...
}
无效气泡_排序(bool rev=false)
{
气泡排序(rev?std::greater{}:std::less{});
}

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

没有C++中的命名参数这样的特征。不,你没有超载<代码> BuffLySype ,至少在你所显示的代码中没有。但是重载它会是一个优雅的解决方案。或者使用默认值为<代码> Rev 。MulkPrimeTime+Engult>如果使用CONTXPROP<代码>,可以避免代码复制。为什么使用BuffelRoT而不是<代码> STD::排序< /COD>?实际上不是我所做的。没有C++中的命名参数这样的特性。不,你没有超载<代码> BuffLySype ,至少在你所显示的代码中没有。ut重载这将是一个优雅的解决方案。或者为
rev
使用一个默认值。如果constexpr
可以使用一些编译时参数+
,以避免这里的代码重复。有什么理由使用bubblesort而不是
std::sort
?我只是想学习一下。如果编译器不够聪明,
cmp在这里将是一个虚拟调用。是的,但他是一个初学者,从他的角度来看,这个细节并不重要。向他介绍一个模板将是一种过火的行为。如果编译器不够聪明,
cmp
在这里将是一个虚拟调用。是的,但他是一个初学者,从他的角度来看,这个细节并不重要。向他介绍一个模板就太过分了。

// 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;
}