好吧,伙计们。我知道我已经发布了这个代码(我现在已经修改了它以前的代码),但似乎还有一些事情发生了,我不想编辑我之前的帖子以包含另一个问题(因为那是针对规则)。
当我编译下面的代码时,我从库中深入收到错误消息
safe_iterator.h: **error: no match for 'operator<' in '(+ __lhs)->__gnu_debug::_Safe_iterator<_Iterator, _Sequence>::base [with _Iterator = std::_Rb_tree_iterator<std::pair<const int, int> >, _Sequence = __gnu_debug_def::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >]() < (+ __rhs)->__gnu_debug::_Safe_iterator<_Iterator, _Sequence>::base [with _Iterator = std::_Rb_tree_iterator<std::pair<const int, int> >, _Sequence = __gnu_debug_def::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >]()'**
有什么想法吗?请不要对我太苛刻。我有点像n00b。 :)
// Returns the mode (most common element) of an integer array
int mode(int* arrPtr, int size) {
assert (size > 0);
std::map<int,int> M;
for (int k = 0; k < size; ++k)
M[arrPtr[k]]++;
std::pair<int,int> maxpair(M.begin()->first, M.begin()->second);
for (std::map<int,int>::iterator it = M.begin() + 1; it < M.end(); ++it)
if (it->second > maxpair.second) maxpair = *it;
return (maxpair.first);
}
答案 0 :(得分:0)
迭代器不实现operator<
您应该使用it != end
,谨防size
为零!