108.STL adjacent_find算法

2023-12-13 04:08:19

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;
}

文章来源:https://blog.csdn.net/weixin_63779802/article/details/134938103
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。