c++ - Unusual behaviour with std::list<myclass*>::iterator comparison -


i'm seeing unusual behavior when compare 2 iterators.

vector<list<myclass*>>   vlwatchers(10); list<myclass*>::iterator itcurrent, itend;  (int i(0); <= 9; ++i) {     itcurrent = vlwatchers[i].begin();     itend = vlwatchers[i].end();     while (itcurrent != itend)     {         //code     } } 

will cause liste iterators incompatible error on while() line, , appears happen when = 0, although of time.

upon further investigation after error called, itend , itcurrent both equal 0xcdcdcdcd. weird part when step != compare operator, "this" pointer becomes 0xcdcdcdcd. shouldn't 0xcdcdcdcd value that's stored in iterators, not address of iterators themselves? or there sort of iterator black magic iterator both stores value , value? part of larger project, error repeatable.

thank in advance help!

let's follow logic chain (assuming first few lines of for loop described):

  • itcurrent->this == 0xcdcdcdcd, therefore ...
  • itcurrent == 0xcdcdcdcd, therefore ...
  • vlwatchers[i].begin() returned 0xcdcdcdcd, therefore ...
  • vlwatchers[i] invalid, therefore perhaps ...
    • i >= vlwatches.size(), or
    • vlwatchers invalid

i vote vlwatchers.size() == 0 somehow. can add check method detect case?


Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -