在STL函数中找到传递给谓词的元素的索引,可以使用std::find_if
函数结合std::distance
来实现。
std::find_if
函数接受一个范围和一个谓词作为参数,用于在范围内查找满足谓词条件的元素。如果找到了满足条件的元素,则返回指向该元素的迭代器;如果没有找到,则返回范围的结束迭代器。
std::distance
函数接受两个迭代器作为参数,用于计算两个迭代器之间的距离,即元素的索引。
下面是一个示例代码:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5};
// 定义谓词,查找大于3的元素
auto predicate = [](int num) {
return num > 3;
};
// 使用std::find_if查找满足条件的元素
auto it = std::find_if(nums.begin(), nums.end(), predicate);
if (it != nums.end()) {
// 使用std::distance计算元素的索引
int index = std::distance(nums.begin(), it);
std::cout << "找到满足条件的元素,索引为:" << index << std::endl;
} else {
std::cout << "未找到满足条件的元素" << std::endl;
}
return 0;
}
输出结果为:
找到满足条件的元素,索引为:3
在这个示例中,我们定义了一个谓词predicate
,用于查找大于3的元素。然后使用std::find_if
函数在nums
向量中查找满足条件的元素,并返回指向该元素的迭代器。最后使用std::distance
函数计算迭代器与nums.begin()
之间的距离,即元素的索引。
领取专属 10元无门槛券
手把手带您无忧上云