adjacent_find
是C++ STL中的算法之一,用于在指定范围内查找相邻重复的元素,返回第一对相邻重复元素的第一个元素的迭代器。以下是
adjacent_find
的基本用法:#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { vector<int> numbers = { 1, 2, 2, 3, 4, 4, 5, 6 }; // 使用 adjacent_find 查找相邻重复的元素 vector<int>::iterator it = adjacent_find(numbers.begin(), numbers.end()); if (it != numbers.end()) { cout << "找到了相邻重复的元素:" << *it << endl; } else { cout << "未找到相邻重复的元素" << endl; } return 0; }
在这个例子中,
adjacent_find
查找了相邻的两个重复元素,即 2 和 4。如果找到了相邻重复元素,返回的迭代器指向第一个重复元素;如果未找到,返回的迭代器等于numbers.end()
。也可以通过提供谓词函数来自定义判定条件。例如,如果你想查找相邻元素之差为1的情况:
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { vector<int> numbers = { 1, 3, 4, 7, 8, 10, 11 }; // 使用 adjacent_find 自定义谓词函数 auto customPredicate = [](int a, int b) { return std::abs(a - b) == 1; }; vector<int>::iterator it = std::adjacent_find(numbers.begin(), numbers.end(), customPredicate); if (it != numbers.end()) { cout << "找到了相邻差值为1的元素:" << *it << endl; } else { cout << "未找到相邻差值为1的元素" << endl; } return 0; }