常用的算法函数
发布日期:2021-04-30 21:01:52 浏览次数:87 分类:精选文章

本文共 2237 字,大约阅读时间需要 7 分钟。

C++ 迭代器函数简明教程

一元函数与一元断言

一元函数:接受一个参数的函数。

一元断言(谓词):返回类型为bool的函数。

for_each()

for_each()用于对容器内的所有元素执行指定的操作。

示例

void print(int &number) {    ++number;    cout << number << " ";}void test() {    vector
numberVec = {1, 3, 5, 7, 9, 4, 6, 7}; for_each(numberVec.begin(), numberVec.end(), print); // 或者使用匿名函数形式 for_each(numberVec.begin(), numberVec.end(), [](int &number) { ++number; cout << number << " "; });}

remove_if()

remove_if()用于移除容器中不符合条件的元素。

示例

bool func(int number) {    return number > 4;}void test() {    vector
numberVec = {1, 3, 7, 8, 1, 2, 5, 7, 9, 4, 6, 7}; // 复制并显示原始内容 copy(numberVec.begin(), numberVec.end(), ostream_iterator
(cout, " ")); cout << endl; cout << endl; // 找到不满足条件的元素并移除 auto it = remove_if(numberVec.begin(), numberVec.end(), func); // 复制并显示修改后的内容 copy(numberVec.begin(), numberVec.end(), ostream_iterator
(cout, " ")); cout << endl; // 移除找到的元素及其之后的元素 numberVec.erase(it, numberVec.end()); // 复制并显示最终内容 copy(numberVec.begin(), numberVec.end(), ostream_iterator
(cout, " ")); cout << endl;}

find()与 count()

find()用于找到第一个匹配元素的位置,count()用于统计匹配元素的总数。

示例

void test() {    vector
numberVec = {1, 3, 5, 7, 9, 4, 6, 7}; // 复制并显示内容 copy(numberVec.begin(), numberVec.end(), ostream_iterator
(cout, " ")); cout << endl; // 统计7的数量 size_t cnt1 = count(numberVec.begin(), numberVec.end(), 7); cout << "cnt1 = " << cnt1 << endl; // 查找元素3的位置 auto it = find(numberVec.begin(), numberVec.end(), 3); if (it == numberVec.end()) { cout << "该元素不存在于vector中" << endl; } else { cout << "该元素存在于vector中" << *it << endl; }}

mem_fn()

mem_fn()用于将成员函数传递给算法,如for_each()

示例

class Number {public:    Number(size_t data = 0) : _data(data) {}    void print() const {        cout << _data << " ";    }private:    size_t _data;};void test() {    vector
numbers; for (size_t idx = 1; idx != 30; ++idx) { numbers.push_back(Number(idx)); } // 使用mem_fn传递成员函数 for_each(numbers.begin(), numbers.end(), mem_fn(&Number::print)); // 注意:直接使用Number::print会引发错误 cout << endl;}

这些函数为C++标准库提供了强大的迭代和查找功能,能够简化代码编写和逻辑管理。

上一篇:WorkNote:Oracle数字[varchar]排序问题解决
下一篇:2020年 第十一届蓝桥杯参赛历程总结

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2026年06月18日 08时44分34秒