Tôi có một số std::unordered_multimap
và tôi muốn lấy phần tử được chèn cuối cùng của một khóa cụ thể. Tôi quan sát thấy hành vi này:Tôi có thể dựa vào thứ tự của một bản đồ không có thứ tự không?
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main() {
unordered_multimap<string, string> mmap;
mmap.emplace("a", "first");
mmap.emplace("a", "second");
mmap.emplace("a", "last");
mmap.emplace("b", "1");
mmap.emplace("b", "2");
mmap.emplace("b", "3");
auto last_a = mmap.equal_range("a").first;
auto last_b = mmap.equal_range("b").first;
cout << last_a->second << endl;
cout << last_b->second << endl;
return 0;
}
Mã này kết quả đầu ra:
last
3
này được, ít nhất, trên GCC, hành vi tôi muốn. Tôi có thể dựa vào điều này? Liệu tiêu chuẩn có mô phỏng về thứ tự các trang std::unordered_multimap
lưu trữ không? Nếu không, điều gì sẽ là lựa chọn tốt nhất?
Bạn sẽ nhận được 'đầu tiên 1' với [libC++] (http://coliru.stacked-crooked.com/a/f8f56abb25674bbe). –