首页 > 解决方案 > c++排序函数中的第三个参数是什么?

问题描述

它似乎与比较器有关,其中的每一件事是什么意思?首先,我想补充一点,我不太了解比较器,我会在可能的时候研究一下,但除此之外,我多次看到这种语法,即使我知道它是什么意思是,我希望有人为此提供详细的答案或资源。

1.什么是第一个[],我也看到了,有什么[&]不同?我想下(const int a, const int b)一个是我们声明并动态使用的未命名函数的参数?是body ,{return to_string(a) + to_string(b) > to_string(b) + to_string(a);}我们怎么知道它的返回类型是bool?

  1. 第二个对我来说似乎更令人困惑,它将 int 转换为 string 并在其中累积结果。这里有什么用move()?如果我们只写return s + to_string(i),那也不一样吗?在所有字符串 s 通过引用传递之后?但更重要的是,我认为它不是比较器?那么它到底是什么?

我知道我的知识有一些空白,无法完全理解,但我似乎无法在互联网上找到这个(也许我不知道要搜索的正确术语)所以它可能会有所帮助其他人也是。

代码 1:

sort(nums.begin(), nums.end(), [](const int a, const int b) { return to_string(a) + to_string(b) > to_string(b) + to_string(a);});

代码 2:

return accumulate(nums.begin(), nums.end(), string(""), [](string& s, int i){ return move(s) + to_string(i);}) ;
 }

标签: c++c++17

解决方案


推荐阅读