zoukankan      html  css  js  c++  java
  • C++第12课 STL算法 (一)

    1.查找算法

    find: 区间查找

    find_first_of: 查找区间第一次出现

    adjacent_find: 查找第一次重复的数

    search: 子序列查找

    search_n: 子序列查找出现次数

    count: 区间统计

    count_if: 条件统计

    equal: 比较

    有序查找:

    binary_search: 二分查找

    upper_bound: 查找最后一个大于查找的值

    lower_bound: 大于等于查找的值

    equal_range: 区间比较,必须是有序序列

    void testSearch()
    {
        int array[10] = { 1,3,5,7,8,2,0,1,34,9 };
        vector<int> vec;
        vec.assign(array, array + 10);
        //1.基本查找
        auto result = find(vec.begin(), vec.end(), 1);
        if (result != vec.end()) {
            cout << *result << endl;
        }
        //2.条件查找
        auto findIf = find_if(vec.begin(), vec.end(), [](int vec) {
            return vec > 7;
            });
        if (findIf != vec.end()) {
            cout << *findIf << endl;
        }
        //3.范围查找    find_first_of
        int temp[] = { 9,5,1,3,2,4,6,8,0 };
        auto findRange = find_first_of(vec.begin(), vec.end(), temp, temp + 9);
        cout << *findRange << endl;
        //4.找第一次重复的元素
        vector<int> value = { 1,1,2,3,4,5,6,7,9,9 };
        cout << *adjacent_find(value.begin(), value.end()) << endl;
        //找子串
        int num[] = { 1,2,3 };
        cout << *search(value.begin(), value.end()-1, num, num + 3) << endl;
        //找指定出现次数的元素(重复出现的,连续的)
        //查找连续4个2的位置
        cout << *search_n(value.begin(), value.end(), 4, 2) << endl;
        //查找连续4个大于4个元素的的位置
        cout << *search_n(value.begin(), value.end(), 4, 4, [](int i, int j) {return i > j; }) << endl;
        //统计次数
        cout << count(value.begin(), value.end(), 2) << endl;
        //条件统计
        cout << count_if(value.begin(), value.end(), [](int i, int j = 3) {return i > j; }) << endl;
        //比较
        cout << equal(array, array + 10, vec.begin(), vec.end()) << endl;
        //二分查找  返回的是bool
        sort(vec.begin(), vec.end());
        cout << binary_search(vec.begin(), vec.end(), 4) << endl;
        //大于
        cout << *upper_bound(vec.begin(), vec.end(), 8) << endl;
        //小于等于
        cout << *lower_bound(vec.begin(), vec.end(), 8) << endl;
        //equal_range: 返回值是一个pair : first:等于 second:大于
        cout << *equal_range(vec.begin(), vec.end(), 8).first << endl;
        cout << *equal_range(vec.begin(), vec.end(), 8).second << endl;
    }
  • 相关阅读:
    将多个字典添加到数组输出
    获取字典中的数组
    数组内的元素排序
    1字符串中的world替换为i bookan wisdom2.字符串的相加字符串输出,长度3比较字符串大小4截取字符串5字符串内所有a都替换成A6判断字符串是否以http开头7将字符串内admin和123截取出来8字符添加
    判断是否有前缀后缀
    截取字符串
    大小写
    数据存字典,block排序,删除
    block排序
    描述器 排序(根据属性)
  • 原文地址:https://www.cnblogs.com/creature-lurk/p/15253129.html
Copyright © 2011-2022 走看看