J'ai un std::unordered_multimap
et je veux obtenir le dernier élément inséré d'une clé spécifique. J'ai observé ce comportement:Puis-je me fier à l'ordre d'une carte non ordonnée?
#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;
}
Ce sorties de code:
last
3
C'est, au moins, le CCG, le comportement que je veux. Puis-je compter sur cela? Est-ce que la norme dit quelque chose à propos de la commande les choses de magasin std::unordered_multimap
? Sinon, quelle serait la meilleure alternative?
Vous obtiendrez 'first 1' avec [libC++] (http://coliru.stacked-crooked.com/a/f8f56abb25674bbe). –