你可以使用
std::find_if
算法来遍历元素并测试所需的条件。
注意:此代码假设您要查找元组中第一个元素为 0 的向量元素。
#include <tuple>
#include <vector>
#include <algorithm>
#include <iostream>
int main()
{
using namespace std;
vector<tuple<int, int, int, int>> v;
v.emplace_back(0,1,2,3);
auto it = find_if(begin(v), end(v), [](decltype(*begin(v)) e) {
return get<0>(e) == 0;
});
if (it != end(v))
cout << get<0>(*it) << " " << get<1>(*it);
}
std::find_if
函数使用接受谓词的形式;
template< class InputIt, class UnaryPredicate >
InputIt find_if( InputIt first, InputIt last, UnaryPredicate p );
它会返回:
返回范围[first, last)
中满足特定条件的第一个元素的迭代器...
更为简洁的语法,但需要C++14及以上版本的语言支持,是:
find_if(begin(v), end(v), [](auto&& e) { return get<0>(e) == 0; });
v.end()
,因此测试条件为if (it != v.end())
。 - dkg