- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,我决定使用多重映射而不是数组,这样我就可以将重复值与其他一些值(作为一对值)一起存储。所以,当我声明像这样的多 map 时
multimap<int,int,less_equal<int> > M;
multimap<int,int,less_equal<int> >::iterator it,it2;
然后将所有元素插入其中,比如
(10,1), (2,2), (8,3), (2,2), (8,1)
然后遍历它,我得到了我想要的:
2 2
2 2
8 1
8 3
10 1
但是现在,查找功能不起作用比如,如果我想找到一个数字,比如
it2=M.find(temp);
其中 temp 是 multimap 中存在的某个值,比如 8,它只是忽略它并且找不到它!当我不包含 less_equal 时,查找函数可以正常工作,但由于这是我在程序中想要的,现在我正在为我的代码而苦苦挣扎。任何人都可以建议补救措施吗?以及 find 无法正常工作的原因?
最佳答案
比较器必须定义严格顺序;也就是说,当比较两个等值(value)时,它必须返回 false
。否则,依赖于此的逻辑将失败。特别是,find(temp)
寻找与 temp
等价的键,它满足
!compare(key,temp) && !compare(temp,key)
除非顺序严格,否则不会发生这种情况。
less
(默认比较器)是严格的; less_equal
不是,所以不能使用。
关于c++ - multimap less_equal 导致错误的 find() 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21785577/
因此,我决定使用多重映射而不是数组,这样我就可以将重复值与其他一些值(作为一对值)一起存储。所以,当我声明像这样的多 map 时 multimap > M; multimap >::iterator
我尝试编译这个函数: #include #include #include #include void foo(unsigned n) { std::vector some_vector;
我们可以传递一个函数作为 < (less) 运算符到 STL 数据结构,例如 set , multiset , map , priority_queue , ... 如果我们的函数像<=那样有问题吗?
template struct greater : binary_function { bool operator() (const T& x, const T& y) const {
下面的代码是用来统计满足以下条件的元素的个数: (i > 5) && (i ints; .. int count=std::count_if( ints.begin(), ints.end(
我是一名优秀的程序员,十分优秀!