Обращение к элементу по позиции в map
(Вопрос довольно таки глупый поэтому не бейте) Вот допустим у нас есть самый обычный map:
map<string, int> mymap;
и в нем уже есть 2 элемента(ну или пары) как мне узнать ключ и значение только 2 элемента. Есть что то на подобие:
std::cout << mymap[1].first << " " << mymap[1].second;
Ответы (2 шт):
для словаря такое понятие не очень корректно, однако можно сделать так:
std::map<std::string, int> dict;
dict.insert(std::pair<std::string, int>("a", 1));
dict.insert(std::pair<std::string, int>("b", 2));
int index = 0;
for (const auto& obj : dict)
{
if (index == 1)
{
std::cout << obj.second;
break;
}
index ++;
}
вообще в словаре есть однозначная привязка ключ-значение, а уж как именно расположены ключи - это дело десятое.
если вам как-то хочется иметь доступ по индексу к списку, то
или используйте индекс в качестве ключа
или создайте дополнительно вектор ключей и отсортируйте его по своему усмотрению, тем самым определив индексацию
P.S.
для словарей ваш вопрос выглядит примерно так: "я ищу второй сайт с информацией о c++"
тут же будет вопрос - "что значит второй сайт", вот вам список сайтов, где есть информация, но ни один из них не имеет своего индекса (нумерацию)
гугл вам выдаст в одном порядке, яндекс - в другом
Если нужен какой то i - тый элемент карты по порядку ключа, то просто находим по соответствующему итератору.
auto It = std::next(mymap.begin(), i);
cout << It->first << '\n'
<< It->second;