Я относительно новичок в STL и особенно в библиотеке алгоритмов.
Я пытаюсь перебрать std::multimap
, где и ключ, и значение имеют тип std::string
, используя функцию std::for_each()
и выполнить какую-то задачу.
Вот мой std::multimap
:
std::multimap<std::string, std::string> myMap;
for (int i = 0; i < 5; i++) {
myMap.insert(std::make_pair("key", "value"));
}
А вот строка с for_each()
функцией:
std::for_each(myMap.begin(), myMap.end(), ask);
Функция ask()
определяется следующим образом:
void ask(std::pair<std::string, std::string>& entry) {
// do something...
}
Программа выдает мне следующую ошибку:
ошибка: неверная инициализация ссылки типа
'std :: __ cxx11 :: basic_string &' из выражения типа
«Станд :: пара,
std :: __ cxx11 :: basic_string> '
Я знаю, что проблема связана с функцией for_each()
, и я предполагаю, что это потому, что параметр функции ask()
неверен.
Но, насколько мне известно, каждая запись std::multimap
представляется как std::pair
, поэтому не должна ли функция ask()
принимать объект std::pair
в качестве параметра?