   Hopefully my last STL dumb question.
  Here's a toy example.Say I have a std::vector of points.  that, themselves, contain an index 'i'.  I map pointers to those points together with pointers to those points index.  Shouldn't the map remain sorted with the new index if I modify it AFTER having inserted them in the list ?  My functor is ok, and if I switch the index switching code BEFORE the insertion in the map, it works fine. #include <iostream>#include <vector>#include <map>#include <algorithm>struct ltind{  bool operator()(const int* a, const int* b) const  {return (*a) < (*b);  }};struct Point {int i;int x;int y;Point(int _i, int _x, int _y) { i= _i; x = _x; y=_y;}};int main() {std::vector<Point> test;std::multimap<int*, Point*, ltind> zeList; test.push_back(Point(1,1,1));test.push_back(Point(2,2,2));test.push_back(Point(3,3,3));   zeList.insert(std::pair<int*, Point*>(&(test[0].i),&test[0]));zeList.insert(std::pair<int*, Point*>(&(test[1].i),&test[1]));zeList.insert(std::pair<int*, Point*>(&(test[2].i),&test[2]));test[0].i = 3;test[1].i = 2;test[2].i = 1;for (std::multimap<int*, Point*, ltind>::iterator it = zeList.begin(); it != zeList.end(); ++it) {std::cout << "  [" << *it->first << ", (" << (*it).second->x << "," << (*it).second->y << ")]" << std::endl;}system("PAUSE");return 0;}While the output should be   [1, (3,3)]  [2, (2,2)]  [3, (1,1)]It is actually  [3, (1,1)]  [2, (2,2)]  [1, (3,3)]I must be doing something wrong yet I can't find it.[edited by - xMcBaiNx on May 29, 2004 2:53:59 PM]
  std::map and std::multimap expect the logical value of the indexers to be immutable, which is why they declare the value type of the key to be const. When you use a pointer as a key type, you subvert the logical constness of the key. Don''t do that. If you need to change the key in a std::map, delete the node and reinsert it. ;  Hmm.. Guess I had skipped the const keyword eh?The problem however, since it is a multimap, is that there might be a lot of entries with the same key. That makes it impossible to find the right one back unless i loop trough those with the said key to compare the pointers.  That makes it kindof slow...Well I might do this.  We''ll see.Thanks