加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 与GCC的STL排序问题

发布时间:2020-12-16 09:30:38 所属栏目:百科 来源:网络整理
导读:我一直有STL排序的问题.我正在尝试通过对象中的数据成员对对象矢量进行排序.我查了几个例子,但一旦它落入我的配置,它就不能在GCC下编译.我在Visual Studio上测试过它的工作原理.我在GCC上遇到这个错误: 无法匹配'(test :: by_sym)(const stock,const stock)
我一直有STL排序的问题.我正在尝试通过对象中的数据成员对对象矢量进行排序.我查了几个例子,但一旦它落入我的配置,它就不能在GCC下编译.我在Visual Studio上测试过它的工作原理.我在GCC上遇到这个错误:

无法匹配'(test :: by_sym)(const stock&,const stock&)

我不明白的是,相同的代码将在Visual Studio上编译.

这是我的设置.

driver.cpp

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

class DB

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()()是const不正确的.将其更改为

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

确保stock :: getSymbol()也是一个const函数.如果不是,你不能改变它,那么按值(而不是(const)引用)取参数operator()().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读