当前位置: 首页 > wzjs >正文

网站建设及推广惠州网络推广

网站建设及推广,惠州网络推广,b2b2c网站建设方案,网站推广究竟应该怎么做文章目录 1. 算法分类1.非修改序列算法2.修改序列算法3.排序与分区算法4.二分查找算法5.集合算法6.数值算法 2.关键点总结1.迭代器类型决定算法适用性2.erase-remove用法3.区间表示法 1. 算法分类 1.非修改序列算法 遍历容器但不修改元素。 std::find(begin, end, value); //…

文章目录

    • 1. 算法分类
      • 1.非修改序列算法
      • 2.修改序列算法
      • 3.排序与分区算法
      • 4.二分查找算法
      • 5.集合算法
      • 6.数值算法
    • 2.关键点总结
      • 1.迭代器类型决定算法适用性
      • 2.erase-remove用法
      • 3.区间表示法

1. 算法分类

1.非修改序列算法

遍历容器但不修改元素。
std::find(begin, end, value); // 查找首个等于 value 的元素
std::count(begin, end, value); // 统计等于 value 的元素数量
std::for_each(begin, end, func); // 对每个元素应用函数
for_each 是非修改算法,若需改变元素值需通过引用参数(如 [](int& x))
std::all_of/any_of/none_of(begin, end, pred); // 条件判断

1.返回值:
all_of:所有元素满足 p,或区间为空 → true。
any_of:至少一个元素满足 p → true。
none_of:所有元素均不满足 p,或区间为空 → true。

2.短路求值
all_of:遇到第一个不满足 p 的元素时立即返回 false。
any_of:遇到第一个满足 p 的元素时立即返回 true。
none_of:遇到第一个满足 p 的元素时立即返回 false。

2.修改序列算法

修改元素值或重排元素。
std::copy(begin, end, dest); // 复制元素到目标位置
std::fill(begin, end, value); // 用 value 填充区间
std::replace(begin, end, old, new); // 替换旧值为新值
std::remove(begin, end, value); // 移除等于 value 的元素(逻辑删除)
std::reverse(begin, end); // 反转序列
std::shuffle(begin, end, gen); // 随机打乱序列

3.排序与分区算法

对元素进行排序或分区。
std::sort(begin, end); // 快速排序(默认升序)
std::stable_sort(begin, end); // 稳定排序(保持相等元素的相对顺序)
std::partial_sort(begin, mid, end); // 部分排序(前 mid-begin 个元素有序)
std::nth_element(begin, nth, end); // 使得第 nth 个元素处于有序状态下的正确位置
std::partition(begin, end, pred); // 分区(满足条件的元素放前面)

4.二分查找算法

在有序序列中高效查找元素。
std::binary_search(begin, end, value); // 判断元素是否存在
std::lower_bound(begin, end, value); // 第一个不小于 value 的位置
std::upper_bound(begin, end, value); // 第一个大于 value 的位置
std::equal_range(begin, end, value); // 返回相等元素的区间 [lower, upper)

1.记忆方法

  1. lower_bound:下界(第一个 ≥ value 的位置)
    1.功能:查找第一个不小于(≥)目标值的元素位置。
    2.应用场景:
    插入元素时保持有序(确定插入点)。
    范围查询的左边界(如 [lower, upper))。

  2. upper_bound:上界(第一个 > value 的位置)
    1.功能:查找第一个大于(>)目标值的元素位置。

5.集合算法

处理有序序列的交集、并集等操作。
std::merge(begin1, end1, begin2, end2, dest); // 合并两个有序序列
std::set_intersection(begin1, end1, begin2, end2, dest); // 交集
std::set_union(begin1, end1, begin2, end2, dest); // 并集
std::set_difference(begin1, end1, begin2, end2, dest); // 差集

6.数值算法

std::accumulate(begin, end, init); // 累加求和(可自定义操作)
std::partial_sum(begin, end, dest); // 前缀和
std::adjacent_difference(begin, end, dest); // 相邻元素的差
std::inner_product(begin1, end1, begin2, init); // 内积(可自定义操作)

2.关键点总结

1.迭代器类型决定算法适用性

1.例如,std::sort 要求随机访问迭代器,因此无法用于 list(需用 list::sort)。
2.算法复杂度影响性能:
std::binary_search 的 O (log n) 复杂度依赖于有序序列和随机访问迭代器。

2.erase-remove用法

2.使用 std::remove 后需调用 erase 以物理删除元素(erase-remove 惯用法)。
erase-remove 惯用法是处理连续容器(如 vector)中删除元素的标准方式,其核心步骤为:

1.remove 移动元素:将不需要的元素移至末尾,返回新逻辑终点。
2.erase 物理删除:删除新逻辑终点之后的冗余元素。

3.区间表示法

所有 STL 算法操作的是左闭右开区间 [begin, end),即包含 begin 但不包含 end。

http://www.dtcms.com/wzjs/56026.html

相关文章:

  • 微信营销网站模板千锋教育培训多少钱
  • 如何让网站自适应手机百度爱采购平台登录
  • 真正免费手机网站建设h5制作
  • 做推广最好的网站是哪个?品牌营销做得好的品牌有哪些
  • 做机械设计图纸找什么网站宁波seo在线优化方案公司
  • wordpress 下载管理seo网站优化技术
  • 电子商务 网站建设如何做网站营销推广
  • 张家港市做网站的公司青岛爱城市网app官方网站
  • 自建网站模板关联词有哪些四年级
  • 网站制作 公开课如何做好推广工作
  • 合肥网站建设-中国互联网站推广优化服务
  • 天元建设集团有限公司公章图片优化百度seo
  • 网站谷歌地图提交佛山快速排名
  • 网站建设 招标怎么把网站排名优化
  • 北京建设网站的公司简介网站怎么开发
  • 网站建设与维护参考文献网站文章优化技巧
  • 开封旅游网站建设项目方案搜索引擎优化服务公司哪家好
  • 易语言怎么做网站自动登录注册百度推广账号
  • 华企网站建设推广优化北京seo优化方案
  • 宁乡电商网站建设收费优化网站排名解析推广
  • 网站收藏做系统以后丢了深圳网页设计
  • 沉浸式展厅搭建商网络网站推广选择乐云seo
  • ssh框架可以做网站么郑州网站关键词排名技术代理
  • ui设计和平面设计哪个难武汉seo优
  • 佛山网站设计哪里好网站服务公司
  • wordpress 微信付款seo推广优化工具
  • b2b外贸平台大全搜索关键词优化服务
  • 百度一下建设银行网站首页软文写作
  • 如何做网站走查在哪里可以免费自学seo课程
  • 邵阳 做网站公司营销型网站有哪些功能