使用 C++ 迭代器 find() 查找指向某个值的指针
Posted
技术标签:
【中文标题】使用 C++ 迭代器 find() 查找指向某个值的指针【英文标题】:Using C++ iterator find() to find pointer to certain value 【发布时间】:2016-01-03 18:51:00 【问题描述】:我正在尝试使用迭代器 find() 来检索指向包含某个值的节点类的指针。
有没有比做这样的事情更好的方法?
typedef vector<Node*> Vmap;
Vmap vmap;
for(Vmap::iterator itr = vmap.begin(); itr != vmap.end(); itr++)
if((*itr)->getVal() == 3)
// do something
期望:
Vmap::iterator itr = find(vmap.begin(), vmap.end, 3) // return Node pointer with value == 3
Node* temp_node = *itr
谢谢
编辑:补充给定答案的附加信息。
What is a lambda expression in C++11?
【问题讨论】:
研究不足!有许多重复的问题可以找到。find_if()
和 lambda 表达式就可以解决问题。
我确实做过研究,但我的 c++ 词汇量有限,找不到答案
【参考方案1】:
Vmap::iterator itr = std::find_if(vmap.begin(), vmap.end(),
[](Node* node) return node->getVal() == 3; );
【讨论】:
【参考方案2】:您可以使用std::find_if
:
auto itr = std::find_if(vmap.begin(),
vmap.end(),
[](const Node* node) return node->getVal() == 3;);
【讨论】:
以上是关于使用 C++ 迭代器 find() 查找指向某个值的指针的主要内容,如果未能解决你的问题,请参考以下文章