【发布时间】:2018-11-28 17:15:16
【问题描述】:
据我了解,std::find_if() below 返回一个迭代器,指向arg 范围内的第一个元素,其中第三个参数(lamda 函数)返回 true。那是对的吗?
有人能解释一下为什么没有像 std::pair<std::string, std::type_index>::iterator = std::find_if(...) 这样定义的迭代器吗?
std::find_if() 返回的迭代器存储在哪里?如何单独调用->second 而不是在迭代器上?
std::type_index argType(const std::string& name) const
{
return std::find_if(args_.begin(), args_.end(),
[&name](std::pair<std::string, std::type_index> arg)->bool
{
return arg.first == name;
}
)->second;
}
【问题讨论】:
-
再次计算括号。
->second取消引用由std::find_if返回的迭代器,它指向一对,并访问该对的second成员。
标签: c++ c++11 find c++-standard-library