STL中的常用算法
创始人
2024-06-01 00:47:03
0

STL-常用算法

  • 概述
    • 算法主要是由头文件< algorithm >< functional >< numeric >组成
    • < algorithm >是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历、复制、修改等
    • < numeric >体积很小,只包括几个在序列上面进行简单数学运算等模板函数
    • < functional >定义了一些模版类,用以声明函数对象
  • 常用遍历算法
    • for_each(iterator beg, iterator end, _func)—遍历容器
      • beg—开始迭代器,end—结束迭代器,_func函数或函数对象
    • transform(iterator beg1, iterator end1, iterator beg2, _func)—搬移容器到另一个容器中
      • beg1—原始容器开始迭代器, end1—原始容器结束迭代器, beg2—目标容器开始迭代器, _func—函数或者函数对象(用于在完全搬运前是否想对原始数据进行合理变换)
      • 目标容器要提前开辟空间
  • 常用查找算法
    • find(iterator beg, iterator end, value)—按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置
      • beg—开始迭代器,end—结束迭代器,value—查找元素
    • find_if(iterator beg, iterator end, _pred)—按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置
      • beg—开始迭代器,end—结束迭代器,_pred—函数或者谓词(bool类型的仿函数)
    • adjacent_find(iterator beg, iterator end)—查找相邻重复元素,返回相邻元素的第一个位置的迭代器
      • beg—开始迭代器,end—结束迭代器
    • bool binary_search(iterator beg, iterator end, value)—二分查找法,查找指定元素,查到返回true否则false
      • 注意—在无序序列中不可用—返回0或1
      • beg—开始迭代器,end—结束迭代器,value—查找元素
    • count(iterator beg, iterator end, value)—统计元素出现次数—返回int—int就是次数—如果是自定义,则需要在类中重载==,表达出何时返回true即可
      • beg—开始迭代器,end—结束迭代器,value—被统计元素
    • count_if(iterator beg, iterator end, _pred)—按条件统计元素出现次数
      • beg—开始迭代器,end—结束迭代器,_pred—谓词
  • 常用排序算法
    • sort(iterator beg, iterator end, _pred)—按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置
      • beg—开始迭代器,end—结束迭代器,_pred—谓词
    • random_shuffle(iterator beg, iterator end)—指定范围内的元素随机调整次序
      • beg—开始迭代器,end—结束迭代器
    • merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)—容器元素合并,并存储到另一容器中
      • beg1—容器1开始迭代器,end1—容器1结束迭代器,dest—目标容器开始迭代器
    • reverse(iterator beg, iterator end)—反转指定范围的元素
  • 常用拷贝和替换算法
    • copy(iterator beg, iterator end, iterator dest)—按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置
      • dest—目标起始迭代器
    • replace(iterator beg, iterator end, oldvalue, newvalue)—将区间内旧元素替换成新元素
      • beg—开始迭代,oldvalue—旧元素,newvalue—新元素
    • replace_if(iterator beg, iterator end, _pred, newvalue)—按条件替代元素,满足条件的替换成指定元素
      • _pred—谓词,newvalue—替换的新元素
    • swap(container c1, container c2)—互换两个相同容器内的元素
      • c1—容器1
  • 常用算术生成算法
    • 注意
      • 算术生成算法属于小型算法,使用时包含#include< numeric >
    • accumulate(iterator beg, iterator end, value)—计算容器元素累计总和
      • value—起始值
    • fill(iterator beg, iterator end, value)—向容器中填充元素
      • value—填充值
  • 常用集合算法
    • set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)—求两个集合的交集
      • dest—目标容器开始迭代器
    • set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)—求两个集合的并集
      • 注意—两个集合必须是有序序列
      • dest—目标容器开始迭代器
    • set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)—求两个集合的差集
      • 前提—有序

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...