我正在尝试使用迭代器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
谢谢
编辑:补充给定答案的补充信息。
答案 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;});