Ich erstelle eine Karte nur zu Lernzwecken, um einige Schlüsselwertpaare zu speichern. Wenn ich das zweite Feld der Karte unter Verwendung begin()
Funktion drucke, kann ich das zweite Feld der Karte drucken, aber wenn ich versuche, dasselbe mit dem letzten Element der Karte unter Verwendung end()
zu tun, kann es das zweite Feld nicht drucken. Unten ist mein Code:Konnte zweites Feld der Karte nicht mit end() erhalten
#include <iostream>
#include <cstdlib>
#include <map>
#include <string>
#include <stdio.h>
using namespace std;
map<int,std::string> arr;
map<int,std::string>::iterator p;
int main(int argc, char** argv) {
arr[1] = "Hello";
arr[2] = "Hi";
arr[3] = "how";
arr[4] = "are";
arr[5] = "you";
p = arr.begin();
printf("%s\n",p->second.c_str());
p = arr.end();
printf("%s\n",p->second.c_str());
return 0;
}
für STL-Container, ".end()" liefert einen Iterator zum "1-extend-the-end-Element" siehe auch: http: // stackoverflow.com/questions/15252002/what-is-the-past-the-end-iterator-in-stl-c – user2950911