Witam
Chciałem zrobić sobie funkcję sortującą wielowymiarową mapę i chciałem użyć do tego iteratora ale pojawił się pewien problem.
map<string, map<string, string>> mapa;
for(int i = 0; i < 1500; i++) {
mapa[to_string(i)]["id"] = to_string(i);
}
struct struktura;
map<string, map<string, string>>::iterator it = mapa.end();
it--;
cout << it->second["id"] << endl; // To działa. Wyświetla id 1499
struktura strukt;
strukt.list = mapa;
strukt.sort();
struct struktura {
map<string, map<string, string>> list;
void sort() {
map<string, map<string, string>> it = list.end();
it--;
cout << it->second["id"] << endl; // Tutaj wyświetla 999. Czemu?
}
Poza strukturą wszystko ładnie działa a w strukturze maksymalny iterator ma indeks 999 chociaż mapa ma 1500 elementów. Tak samo mogę w strukturze te elementy wyświetlić w ten sposób:
cout << list["1400"]["id"];
I wszystko ładnie działa. Wie ktoś może co jest tego przyczyną? Może trzeba to zalakować dynamicznie z większą ilością pamięci?
Z góry dziękuję za pomoc. ;)