使用 std::sort 对向量进行排序
Sorting a Vector with std::sort
我得到了一个包含对的向量。我的对有模板参数。
std::vector<std::pair<T1, T2> > myVector;
我想按对第二个数据标签对 myVector 进行排序,因此按"值"(T2),而不是"键"(T1)。我在这里看到我可以使用这种甜蜜的方法:
std::sort(myVector.begin(), myVector.end(), mySortingFunc);
这是我的排序:
bool mySortingFunc (std::pair<T1, T2> pair1, std::pair<T1, T2> pair2){
return (pair1.second<pair2.second);
}
而且它没有编译,给我扔了 10 公里长的错误。(我使用 G++)任何建议我应该怎么做?
- E D I T:
实际代码:
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
:
static bool sortFunc (std::pair<T1, T2> pair1, std::pair<T1, T2> pair2) {
return (pair1.second<pair2.second);
}
有了static
关键字,现在它变得就像常规函数一样,可以在没有类实例的情况下调用,这意味着std::sort
现在可以工作了。
如果函数通过常量引用接受参数,那就太好了:
static bool sortFunc(std::pair<T1,T2> const& p1,std::pair<T1,T2> const& p2)
{
return p1.second < p2.second;
}
希望有帮助。
相关文章:
- 将结构向量排序为子组
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 如何在对向量排序后更改索引值?c++
- C++向量排序给出0作为输出
- 将许多向量排序在一起
- 根据一个向量对多个向量排序
- 编译错误向量排序和联合
- C++我自己的函数进行向量排序
- 将字符串的向量排序为日期"yyyymmdd"
- C++ 通过使用旧向量进行预排序来改进向量排序
- C 向量排序 .h .cpp中的单独文件
- 向量排序-c++
- 将向量排序到一个无序映射c++11中
- 向量的向量排序
- c++向量排序方法编译失败,返回预期表达式
- 如何对bitset向量排序
- 向量排序的基础上只有先
- 我如何以相同的方式对两个向量排序,而条件只使用其中一个向量
- 列表排序和结构体向量排序之间的性能差距.c++
- 如何基于第二个字符串对字符串向量的向量排序