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.


Anmelden zum Antworten