C 将对向量与自定义的模板库进行排序

c++ sorting a vector of pair with a self defined template library

本文关键字:排序 向量 自定义      更新时间:2023-10-16

已解决
谢谢,我使用了David Schwartz的答案并解决了问题。以下是我可以使用的代码。

我最初的问题是如何分类对的矢量,我从这里得到答案:
对std :: vector< std :: pair< std :: string,bool>>通过字符串?

然后,我想将此方法保留在我的库my_lib.hpp中,这样我就可以在需要时使用它,而且我想尝试为其制作模板。
以下是我的设置,我的问题是我在Eclipse中遇到此错误

void haha::pair_sort_second_dec<std::pair<int, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::vector<std::pair<int, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<int, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&) main.cpp/问题行406 c/c 问题

不确定的引用

my_lib.hpp

namespace haha{
template <class T>
bool pairCompare_dec(const T& , const T& );
template <class T>
void pair_sort_second_dec(std::vector<T>& );

template <class T>
bool pairCompare_dec(const T& firstElem,const T& secondElem) {
  return firstElem.second > secondElem.second;
}
template <class T>
void pair_sort_second_dec(std::vector<T>& target){
    std::sort(target.begin(),target.end(),pairCompare_dec<T>);
}
};

main.cpp

#include "my_lib.hpp"
int main(int argc,char* argv[]){
    std::vector<std::pair<int,std::string> > test;
    // initial test
    haha::pair_sort_second_dec(test);
    return 0;
}

有人知道如何解决吗?预先感谢。

std::sort(target.begin(),target.end(),pairCompare_dec);

应该是:

std::sort(target.begin(),target.end(),pairCompare_dec<T>);