C++ 如何在c++;
我在类数组中有一个排序函数,希望在python中实现类似于排序(reverse=True)的功能。我想向用户展示他们可以传递这个参数,因为现在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
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;
}