Các đối tượng do người dùng xác định được sắp xếp trong bản đồ và được đặt như thế nào? Theo như tôi biết, bản đồ/bộ được sắp xếp Liên kết vùng chứa: các yếu tố được chèn được sắp xếp dựa trên khóa mà nó nắm giữ.Sắp xếp thứ tự trong bản đồ STL và đặt
Nhưng bản đồ và đặt sử dụng nội bộ operator >
để sắp xếp các yếu tố của chúng.
Từ trang web của SGI, tôi có các ví dụ sau đây:
struct ltstr
{
bool operator()(const char* s1, const char* s2) const
{
return strcmp(s1, s2) < 0;
}
};
int main()
{
map<const char*, int, ltstr> months;
months["january"] = 31;
months["february"] = 28;
months["march"] = 31;
months["april"] = 30;
months["may"] = 31;
months["june"] = 30;
months["july"] = 31;
months["august"] = 31;
months["september"] = 30;
months["october"] = 31;
months["november"] = 30;
months["december"] = 31;
cout << "june -> " << months["june"] << endl;
map<const char*, int, ltstr>::iterator cur = months.find("june");
map<const char*, int, ltstr>::iterator prev = cur;
map<const char*, int, ltstr>::iterator next = cur;
++next;
--prev;
cout << "Previous (in alphabetical order) is " << (*prev).first << endl;
cout << "Next (in alphabetical order) is " << (*next).first << endl;
}
Trong ví dụ trên, như thế nào là giá trị được sắp xếp?
Chỉnh sửa: Mã chuyển từ bình luận:
typedef map <string, int> Mint ;
int main()
{
string Name ;
int Marks;
Mint Grade;
for (int i = 0; i<4; i++)
{
cin>> Name ;
cin >> Marks;
Grade [Name] = Marks ;
}
Mint :: iterator iter;
for(iter = Grade.begin(); iter != Grade.end(); iter++)
cout<< (*iter).first<<“ \t ” <<(*iter).second<<“\n” ;
return 0;
}
Làm thế nào sẽ các giá trị được sắp xếp?
Vì vậy, bản đồ cơ bản sử dụng khóa để sắp xếp các giá trị dựa trên std :: less sử dụng toán tử
ronan
Có, nó sử dụng 'toán tử <' ở cuối nếu bạn không chỉ rõ đối số mẫu. –
@Kirill Nó sử dụng bộ so sánh để so sánh các phím không phải là phần tử. – DumbCoder