Tôi đang tạo bản đồ chỉ dành cho mục đích học tập để lưu trữ một số cặp khóa giá trị. Nếu tôi in trường thứ hai của bản đồ bằng cách sử dụng chức năng begin()
Tôi có thể in trường thứ hai của bản đồ nhưng khi tôi cố gắng làm tương tự với phần tử bản đồ cuối cùng bằng cách sử dụng end()
, nó không thể in trường thứ hai. Dưới đây là mã của tôi:Không thể lấy trường thứ hai của bản đồ bằng cách sử dụng kết thúc()
#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;
}
cho hộp chứa STL, ".end()" mang lại một trình lặp cho "yếu tố 1 thành phần cuối" cũng xem: http: // stackoverflow.com/questions/15252002/what-is-the-past-the-end-iterator-in-stl-c – user2950911