使用C ++迭代器find()来查找指向某个值的指针

时间:2016-01-03 18:51:01

标签: c++ pointers iterator find

我正在尝试使用迭代器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?

2 个答案:

答案 0 :(得分:2)

Vmap::iterator itr = std::find_if(vmap.begin(), vmap.end(),
  [](Node* node) { return node->getVal() == 3; } );

答案 1 :(得分:1)

您可以使用std::find_if

auto itr = std::find_if(vmap.begin(),
                        vmap.end(),
                        [](const Node* node) { return node->getVal() == 3;});