【发布时间】:2019-01-16 05:03:03
【问题描述】:
我对 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 对象作为其参数吗?
【问题讨论】:
-
@JeJo ask() 方法很长,所以我决定编写一个单独的函数来保持代码更简洁。