问题描述
我有一个成对的向量,而且我还有一个可能等于向量中的 pair.first 的数字。我想使用这个数字搜索向量,然后如果它在向量中,则返回整个对。这是代码:
vector<pair<size_t,size_t>> = (psuedocode) {{0,13},{1,12},{3,11}};
现在,我有一个名为 vertex 的值,它可能等于也可能不等于向量中的 pair.first 中的一个。我只有这些信息,足以满足我的目的,可以搜索向量。如果它等于 pair.first 中的一个,我想返回整个对。所以基本上我是在成对的向量中搜索。首先,而不是成对。我该如何实现?
现在,我正在使用 find 方法:
vector<pair<size_t,size_t>>::iterator it = find(v.begin(),v.end(),vertex);
显然,这不起作用,因为顶点的类型是“size_t”,并且不是一对。
解决方法
std::find_if()
更适合这种情况下的工作。
#include <algorithm>
#include <iostream>
#include <utility>
#include <vector>
int main() {
std::vector<std::pair<int,int>> v{{1,2},{2,3},{3,4}};
int vertex= 2;
auto it = std::find_if(
v.begin(),v.end(),[&vertex](std::pair<int,int> i) { return i.first == vertex; });
std::cout << it->first << "," << it->second << '\n';
}
输出:
2,3