compilation error with const_reverse_iterator
Consider the following program:
#include <iostream>
#include <map>
#include <string>
#include <utility>
#include <algorithm>
using namespace std;
int main()
{
map<string, int> si;
string word;
while (cin >> word)
++si[word];
multimap<int, string> is;
for (map<string, int>::const_iterator i = si.begin(); i != si.end(); +
+i)
is.insert(make_pair(i->second, i->first));
for (multimap<int, string>::const_reverse_iterator r = is.rbegin(); r !
= is.rend(); ++r)
cout << r->second << " " << r->first << endl;
return 0;
}
Under g++, I get compilation error for the line
for (multimap<int, string>::const_reverse_iterator r = is.rbegin(); r !
= is.rend(); ++r)
The actual error message is
error: no match for 'operator!=' in 'r != std::multimap<_Key, _Tp,
_Compare, _Alloc>::rend() [with _Key = int, _Tp = std::string,
_Compare = std::less<int>, _Alloc = std::allocator<std::pair<const
int, std::string> >]()'
However this program compiles fine under VC++ 2005 Express Edition.
I use the following compilation command under g++.
g++ -std=c++98 -pedantic -Wall -Wextra word_count.cpp
Kindly explain why I am getting error for the above mentioned line
under g++ only.
Thanks
V.Subramanian