gpt4 book ai didi

c++ - 使用 std::sort 对 Vector 进行排序

转载 作者:行者123 更新时间:2023-11-30 02:01:03 37 4
gpt4 key购买 nike

我得到了一个包含对的 vector 。我的对有模板参数。

std::vector<std::pair<T1, T2> > myVector;

我想按对的第二个数据标记对 myVector 进行排序,因此按“值”(T2),而不是“键”(T1)。我看到了here我可以使用这种甜蜜的方法:

std::sort(myVector.begin(), myVector.end(), mySortingFunc);

这是我的 sortFunc:

bool mySortingFunc (std::pair<T1, T2> pair1,   std::pair<T1, T2> pair2){ 
return (pair1.second<pair2.second);
}

它没有编译,抛出 10 公里长的错误。 (我使用 g++)有什么建议我应该怎么做吗?

  • 编辑:

实际代码:

template<typename T1, typename T2>
class OrderedMMap
{

std::vector<std::pair<T1, T2> > myVector;

public:

bool sortFunc (std::pair<T1, T2> pair1, std::pair<T1, T2> pair2) {

return (pair1.second<pair2.second);
}

void sortIt()
{
std::sort(myVector.begin(), myVector.end(), sortFunc);
}
};

最佳答案

您的sortFunc 是一个非静态 成员函数。那就是问题所在。非静态成员函数只能在类的对象上调用; std::sort 无法为您完成。

简单的解决方法是使函数静态:

static bool sortFunc (std::pair<T1, T2> pair1,   std::pair<T1, T2> pair2) { 
return (pair1.second<pair2.second);
}

有了 static 关键字,现在它就像普通函数一样,可以在没有类实例的情况下被调用,这意味着 std::sort 现在可以工作了。

如果函数通过 const 引用接受参数就好了:

static bool sortFunc(std::pair<T1,T2> const& p1,std::pair<T1,T2> const& p2) 
{
return p1.second < p2.second;
}

希望对您有所帮助。

关于c++ - 使用 std::sort 对 Vector 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14547580/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com