gpt4 book ai didi

c++使用自定义模板库对 vector 对进行排序

转载 作者:行者123 更新时间:2023-11-28 02:59:12 25 4
gpt4 key购买 nike

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

我最初的问题是如何对 vector 对进行排序,我从这里得到了答案:
Sorting a std::vector<std::pair<std::string,bool>> by the string?

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

undefined reference to 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 /question line 406 C/C++ Problem

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>);

关于c++使用自定义模板库对 vector 对进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21275506/

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