c – 排序中的<运算符断言无效
我正在尝试实现一个简单的比较器,用于根据数组“_vec”中的值对索引进行排序.我收到“无效<运算符”运行时错误消息.我无法理解以下代码有什么问题:
class Compare{ vector<int>& _vec; public: Compare(vector<int>& vec) : _vec(vec) {} bool operator()(size_t i,size_t j){ if(_vec[i] != _vec[j]) return _vec[i] < _vec[j]; else return (double)rand()/RAND_MAX < 0.5; } }; 我正在使用以下函数调用: sort(inds.begin(),inds.end(),Compare(vals)); 其中inds只是一个包含索引从1到15(比如说)的数组,而vals是长度为15的数组,其中包含一些我希望计算其排序索引的值.总体目标是在val中的两个(或更多)条目相等时随机化排序顺序.有帮助吗? 解决方法
std :: sort()期望比较操作稳定 – 如果比较两个项时返回特定结果,则比较必须返回相同的结果(如果稍后再次比较这些项).当你返回一个随机值时,显然不一定会持有.
C 03 25.3 / 4“排序和相关操作”说:
为澄清,表28定义了等价关系:
所以你的Compare()操作不会产生等价关系. 获得断言而不是随机丢失数据真是太好了. 当_vec中的两个(或更多个)条目相等时,解决排序顺序随机化问题的一种方法是构成这些索引的随机值,并在index =>的映射中跟踪这些随机值.随机值或其他东西.只需确保以这样的方式跟踪和使用这些随机值,即Compare()的传递和等价属性保持不变. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 发送 Email 并在 body 中直接嵌入图片
- ruby-on-rails – 活动管理员:无法访问显示/编辑页面
- ruby-on-rails – 带Rails邮件的Prawn PDF?
- 通过依赖注入传递ASP.NET用户
- 多正则表达式匹配(Multiple Regular Expression Matching)
- iOS UITesting:使用addUIInterruptionMonitorWithDescript
- 华为Access、Hybrid和Trunk的区别和设置
- 算法基础——2.4正则表达式初步
- c – “无法启动程序”(调试版本)
- 有时,使用实体框架查询Oracle DB时会出现错误“ORA-00933”