C++STL总结——常用算法——查找算法

C++STL总结——常用算法——查找算法


包含头文件:algorithm

整合

//find:查找元素是否存在
//find(begin, end, value)
//找到返回迭代器,未找到返回end()
void find_test() {
    vector<int> v;
    for (int i = 0; i < 10; i++) {
        v.push_back(i);
    }

    vector<int>::iterator pos = find(v.begin(), v.end(), 3);
}

//find_if(begin, end, function):按照条件查找
//最后一个参数是函数或者仿函数
//返回迭代器
class GreaterFive {
public:
    bool operator() (int n) {
        return n>5;
    }
};
void find_if_test() {
    vector<int> v;
    for (int i = 0; i < 10; i++) {
        v.push_back(i);
    }

    vector<int>::iterator pos = find_if(v.begin(), v.end(), GreaterFive());
}

//adjacent_find(begin, end):查找相邻重复元素
//返回相邻元素的第一个位置的迭代器
void adjacent_find_test() {
    vector<int> v;
    v.push_back(0);
    v.push_back(2);
    v.push_back(3);
    v.push_back(0);
    //adjacent_find()查找会返回这个位置的迭代器,对迭代器解引用解出来的是值
    v.push_back(7);
    v.push_back(7);
    v.push_back(0);

    vector<int>::iterator pos = adjacent_find(v.begin(), v.end());
    cout << *pos << endl;
}

//binary_search(begin, end, value):二分查找
//必须用在有序序列中
//返回值为bool
void binary_search_test() {
    vector<int> v;
    for (int i = 0; i < 10; i++) {
        v.push_back(i);
    }

    binary_search(v.begin(), v.end(), 5);
}

//count(begin(), end(), value):统计元素个数
//返回值为int
void count_test() {
    vector<int> v;
    v.push_back(3);
    v.push_back(3);
    v.push_back(5);
    v.push_back(2);
    v.push_back(1);

    cout << count(v.begin(), v.end(), 3) << endl;
}

//count_if(begin(), end(), function):按照条件查找
//最后一个参数是谓词(仿函数)
//返回值类型为int
class GreaterFour {
public:
    bool operator() (int n) {
        return n>4;
    }
};
void count_if_test() {
    vector<int> v;
    for (int i = 0; i < 10; i++) {
        v.push_back(i);
    }

    cout << count_if(v.begin(), v.end(), GreaterFour()) << endl;
}

find

//find:查找元素是否存在
//find(begin, end, value)
//找到返回迭代器,未找到返回end()
void find_test() {
    vector<int> v;
    for (int i = 0; i < 10; i++) {
        v.push_back(i);
    }

    vector<int>::iterator pos = find(v.begin(), v.end(), 3);
}

find_if

//find_if(begin, end, function):按照条件查找
//最后一个参数是函数或者仿函数
//返回迭代器
class GreaterFive {
public:
    bool operator() (int n) {
        return n>5;
    }
};
void find_if_test() {
    vector<int> v;
    for (int i = 0; i < 10; i++) {
        v.push_back(i);
    }

    vector<int>::iterator pos = find_if(v.begin(), v.end(), GreaterFive());
}

adjacent_find

//adjacent_find(begin, end):查找相邻重复元素
//返回相邻元素的第一个位置的迭代器
void adjacent_find_test() {
    vector<int> v;
    v.push_back(0);
    v.push_back(2);
    v.push_back(3);
    v.push_back(0);
    //adjacent_find()查找会返回这个位置的迭代器,对迭代器解引用解出来的是值
    v.push_back(7);
    v.push_back(7);
    v.push_back(0);

    vector<int>::iterator pos = adjacent_find(v.begin(), v.end());
    cout << *pos << endl;
}

binary_search

//binary_search(begin, end, value):二分查找
//必须用在有序序列中
//返回值为bool
void binary_search_test() {
    vector<int> v;
    for (int i = 0; i < 10; i++) {
        v.push_back(i);
    }

    binary_search(v.begin(), v.end(), 5);
}

count

//count(begin(), end(), value):统计元素个数
//返回值为int
void count_test() {
    vector<int> v;
    v.push_back(3);
    v.push_back(3);
    v.push_back(5);
    v.push_back(2);
    v.push_back(1);

    cout << count(v.begin(), v.end(), 3) << endl;
}

count_if

//count_if(begin(), end(), function):按照条件查找
//最后一个参数是谓词(仿函数)
//返回值类型为int
class GreaterFour {
public:
    bool operator() (int n) {
        return n>4;
    }
};
void count_if_test() {
    vector<int> v;
    for (int i = 0; i < 10; i++) {
        v.push_back(i);
    }

    cout << count_if(v.begin(), v.end(), GreaterFour()) << endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逸人止

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值