【发布时间】:2015-01-07 13:31:55
【问题描述】:
当我收到一个错误提示我使用 . 运算符从映射中访问一对中的值时,我感到很困惑,因为当我在代码中的两个位置更改它时,我收到了一个新错误,提示我使用-> 在代码中的第二位。我听了唠叨的编译器。为什么我需要这样做?
这就是我正在做的事情:
在基于范围的 for 循环中,我想要键值对中的值,例如:
std::map<std::string, aclass> mapthings;
...
for (auto& it : mapthings) {
fout << it.second.stringify();
}
我也在使用相同的mapthings,但使用的是find() 函数:
return (mapthings.find(name))->second;
【问题讨论】:
-
OT,但如果
name未找到,(mapthings.find(name))->second;将导致未定义的行为;所以那段代码可能需要重写 -
感谢您的提醒。
标签: c++ for-loop map stdmap std-pair