使用 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() 查找指向某个值的指针的主要内容,如果未能解决你的问题,请参考以下文章

C++常用查找算法

map

如何获得multimap的中的key的数目

迭代器在添加到添加到列表向量的结构中时会停止指向某个值吗?

c++ std::map find 用法

[C/C++] multimap查找一个key对应的多个value