Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.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++ 按升序对向量的相同元素排序 bool第三个参数(常数对&a, 康斯特对酒店 { 返回a.second>b.second; } int main(){ 排序(vec.begin()、vec.end()、第三个_参数); 返回0; }_C++ - Fatal编程技术网

C++ 按升序对向量的相同元素排序 bool第三个参数(常数对&a, 康斯特对酒店 { 返回a.second>b.second; } int main(){ 排序(vec.begin()、vec.end()、第三个_参数); 返回0; }

C++ 按升序对向量的相同元素排序 bool第三个参数(常数对&a, 康斯特对酒店 { 返回a.second>b.second; } int main(){ 排序(vec.begin()、vec.end()、第三个_参数); 返回0; },c++,C++,我在这里使用这种排序技术,但对于向量的相同元素,这并不能保证任何东西。我使用的是一对向量,它的第一个数是I,第二个数是int。当它找到两个相等的。第二个元素时,我想按。第一个元素的升序对它们进行排序 std::tie在这种情况下仍然可以使用,只需注意正确排列变量即可 bool third_parameter(const pair<long long,long long> &a, const pair<long long,lo

我在这里使用这种排序技术,但对于向量的相同元素,这并不能保证任何东西。我使用的是一对向量,它的第一个数是I,第二个数是int。当它找到两个相等的。第二个元素时,我想按。第一个元素的升序对它们进行排序

std::tie
在这种情况下仍然可以使用,只需注意正确排列变量即可

bool third_parameter(const pair<long long,long long> &a,
                       const pair<long long,long long> &b)
    {
        return a.second>b.second;
    }

int main (){
        sort(vec.begin(), vec.end(), third_parameter );
    return 0;
    }
bool自定义比较(常量对&a,
康斯特对酒店
{
返回std::tie(b.second,a.first)
我们使用积分的另一个选项是“x的降序”是“x的升序”:

所以

bool自定义比较(常量对&a,
康斯特对酒店
{
返回std::make_tuple(-a.second,a.first)
std::tie
在这种情况下仍然可以使用,只需注意正确排列变量即可

bool third_parameter(const pair<long long,long long> &a,
                       const pair<long long,long long> &b)
    {
        return a.second>b.second;
    }

int main (){
        sort(vec.begin(), vec.end(), third_parameter );
    return 0;
    }
bool自定义比较(常量对&a,
康斯特对酒店
{
返回std::tie(b.second,a.first)
我们使用积分的另一个选项是“x的降序”是“x的升序”:

所以

bool自定义比较(常量对&a,
康斯特对酒店
{
返回std::make_tuple(-a.second,a.first)
std::sort
要求定义小于运算符。 在代码中输入两个元素如何相互作用的技巧

bool custom_compare(const pair<long long, long long> &a,
                    const pair<long long, long long> &b)
{
    return std::make_tuple(-a.second, a.first) < std::make_tuple(-b.second, b.first);
}
bool第三个参数(常数对&a,
康斯特对酒店
{
如果(a秒!=b秒)
返回a.second>b.second;
//当第二个值相等时,根据第一个值排序,首先是最大值
返回a.first

我建议将该方法重命名为更具表现力的方法。

std::sort
要求您定义一个小于运算符。 在代码中输入两个元素如何相互作用的技巧

bool custom_compare(const pair<long long, long long> &a,
                    const pair<long long, long long> &b)
{
    return std::make_tuple(-a.second, a.first) < std::make_tuple(-b.second, b.first);
}
bool第三个参数(常数对&a,
康斯特对酒店
{
如果(a秒!=b秒)
返回a.second>b.second;
//当第二个值相等时,根据第一个值排序,首先是最大值
返回a.first


我建议将该方法重命名为更具表现力的方法。

相信我们,这与C无关。请不要重新添加标记。相信我们,这与C无关。不要重新添加标记,请注意,如果你想先比较
然后再比较
second
,你可以直接用
a>b来比较这对
std::tie
几乎构成了一个新的
(实际上是一个行为类似的
元组
),但在这种情况下,首先翻转
,然后翻转
第二个
。我不确定我是否完全理解了这个问题,但似乎
a
的成员应该绑在一起,而
b
的成员应该绑在一起<代码>标准::tie(a.second,a.first)
等@FrançoisAndrieux:据我所知,OP希望先降低第二,然后增加第一。我不能100%确定这会产生严格的顺序。也许反转
。第一个
的符号会在将一对成员绑在一起时起作用。我喜欢第二种方法,但第一种方法在我看来并不直观。@James注意,如果你想先比较
然后比较
第二个
,你可以直接将两对与
a>b比较
std::tie
几乎构成了一个新的
(实际上是一个行为类似的
元组
),但在这种情况下,首先翻转
,然后翻转
第二个
。我不确定我是否完全理解了这个问题,但似乎
a
的成员应该绑在一起,而
b
的成员应该绑在一起<代码>标准::tie(a.second,a.first)
等@FrançoisAndrieux:据我所知,OP希望先降低第二,然后增加第一。我不能100%确定这会产生严格的顺序。也许反转
。第一个
的符号会在将一对成员绑在一起时起作用。我喜欢第二种方法,但第一种方法在我看来并不直观。这是一种多么不合逻辑的排序,修复了看起来不错的方法。这是运行时的最佳解决方案吗?您如何测试它并让我们知道?如果不测量,你就不会知道。虽然默认情况下我在生产中使用这种编码方式,但我怀疑类似的性能,但我一直在衡量。否则就选择可读性更强的。多么不合逻辑的排序啊,看来不错。这是运行时的最佳解决方案吗?您如何测试它并让我们知道?如果不测量,你就不会知道。虽然默认情况下我在生产中使用这种编码方式,但我怀疑类似的性能,但我一直在衡量。否则,请选择更具可读性的。