Vektoren subtrahieren - wieso geht das hier nicht?
-
vector<map<string, string>> foo; for (auto it = foo.begin(); it != foo.end(); ++it) { for (auto itRow = it->begin(); itRow != it->end(); ++itRow) { cout << itRow - it->begin() << endl; // hier sagt er, dass es keinen entsprechenden operator- gibt } }Wieso geht das denn nicht? Ich will hier den Index rausfinden, an dem der Iterator grade ist. Dass das mit std::distance auch geht, weiß ich. Nur wieso geht hier der operator- net?
-
Bei den Iteratoren von std::map ist std::distance O( n ), während es beim std::vector O( 1 ) ist. Ein "-" sieht nach einer einfachen Operation aus, was es aber in dem Fall nicht wäre. Dashalb hat man für map::iterator kein - definiert.