gpt4 book ai didi

c++ - GCC 的 STL 排序问题

转载 作者:太空狗 更新时间:2023-10-29 20:18:26 25 4
gpt4 key购买 nike

我一直在使用 STL 排序时遇到问题。我正在尝试按对象中的数据成员对对象 vector 进行排序。我查了几个例子,但是一旦它落入我的配置中,它就无法在 GCC 下编译。我在 Visual Studio 上测试过,它可以工作。我在 GCC 上收到此错误:

不匹配调用'(test::by_sym) (const stock&, const stock&)

我不明白的是相同的代码可以在 Visual Studio 上编译。

这是我的设置。

驱动.cpp

DB t1;
t1.print();
cout << "---sorting---" << endl;
t1.sSort();
t1.print();

数据库类

vector<stock> list;

struct by_sym {
bool operator()(stock &a, stock &b) {
return a.getSymbol() < b.getSymbol();
}
};

void DB::sSort(){
std::sort(list.begin(), list.end(), by_sym());
}

我的股票类只有数据成员。

GCC 有解决方法吗?

我相信我的问题类似于 this ,但那里的解决方案对我不起作用。

最佳答案

您的 operator()() 是常量不正确的。改成

bool operator()(const stock& a, const stock& b) const

确保 stock::getSymbol() 也是一个 const 函数。如果不是,并且您无法更改它,则按值而不是(常量)引用获取 operator()() 的参数。

关于c++ - GCC 的 STL 排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4084035/

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