Обращение к контейнеру vector, который находится внутри контейнера map
Есть контейнер map<string,vector<string>> Map.
Требуется найти определённое слово в векторе и вывести его ключ. Отсюда вопрос: как обратиться к вектору, который находится внутри map?
Ответы (2 шт):
Автор решения: dIm0n
→ Ссылка
Пример, как можно работать с такой картой: обращаться к элементу и искать определённый элемент в каком-то векторе.
#include <map>
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
int main() {
const std::map<std::string, std::vector<std::string>> Map = {
{"0", {"hello", "world",}},
{"1", {"world", "hello",}},
};
const auto& first_vector = Map.at("0");
const auto& first_word_in_first_vector = first_vector[0];
const auto word_pos = std::find(std::cbegin(first_vector), std::cend(first_vector), "world");
std::cout << "access: " << first_word_in_first_vector << '\n'
<< "found_word: " << *word_pos << '\n';
}
Доки:
Автор решения: AR Hovsepyan
→ Ссылка
Вопрос не понятно оформлен, но, насколько я понял, вы хотите в векторе искать строку являющийся ключом? Тогда, например, так:
for (auto& p : Map)
for (const auto& str : p.second) {
if (p.first == str)
std::cout << p.first;
}