TransWikia.com

Обращение к контейнеру vector, который находится внутри контейнера map

Stack Overflow на русском Asked on December 14, 2021

Есть контейнер map<string,vector<string>> Map.
Требуется найти определённое слово в векторе и вывести его ключ. Отсюда вопрос: как обратиться к вектору, который находится внутри map?

2 Answers

Вопрос не понятно оформлен, но, насколько я понял, вы хотите в векторе искать строку являющийся ключом? Тогда, например, так:

for (auto& p : Map)    
    for (const auto& str : p.second) {
        if (p.first == str)
            std::cout << p.first;
    }

Answered by AR Hovsepyan on December 14, 2021

Пример, как можно работать с такой картой: обращаться к элементу и искать определённый элемент в каком-то векторе.

#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';
}

Доки:

https://en.cppreference.com/w/cpp/container/map/at

https://en.cppreference.com/w/cpp/algorithm/find

Answered by dIm0n on December 14, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP