Мне было интересно, есть ли способ выполнить произвольный доступ к значениям мультикарты.
#include <map>
#include <vector>
#include <string>
int main() {
std::map<std::string, std::vector<std::string>> m0;
m0["Food"].push_back("Ice Cream");
m0["Food"].push_back("Pizza");
// Random access to Pizza. Nice!
printf ("2nd Food is %s\n", m0["Food"][1].c_str());
std::multimap<std::string, std::string> m1;
m1.insert(std::pair<std::string, std::string>("Food", "Ice Cream"));
m1.insert(std::pair<std::string, std::string>("Food", "Pizza"));
// Is there any way to perform random access in multimap?
std::multimap<std::string, std::string>::const_iterator find = m1.find("Food");
// Sequential access to Pizza. Bad :(
// I wish to have something
// printf ("2nd Food is %s\n", find[1].c_str());
find++;
printf ("2nd Food is %s\n", find->second.c_str());
getchar();
}
Поскольку одним из требований является произвольный доступ к значениям карты, лучше ли использовать векторную карту?