《C++面向对象程序设计》课程笔记 lessen9 算法

本文详细介绍了STL中的七大类算法,包括不变序列算法、变值算法、删除算法、变序算法、排序算法、有序区间算法和数值算法。解析了算法的适用范围、复杂度以及迭代器需求。

1. STL 算法分类

STL 中的算法大致可以分为以下七类:

  • 不变序列算法
  • 变值算法
  • 删除算法
  • 变序算法
  • 排序算法
  • 有序区间算法
  • 数值算法  

大多重载的算法都是有两个版本的:

  • 用 “==” 判断元素是否相等,或用 “<” 来比较大小
  • 多出一个类型参数 “Pred” 和函数形参 “Pred op”:通过表达式判断 “op(x,y)” 的返回值:true/false。(判断 x 是否“等于” y,或者 x 是否 “小于” y)。

如下面的有两个版本的 min_element:

iterator min_element(iterator first, iterator last);
iterator min_element(iterator first, iterator last, Pred op);

1 不变序列算法

  • 该类算法不会修改算法所作用的容器或对象
  • 适用于顺序容器和关联容器
  • 时间复杂度都是 O(N)。

 2 变值算法

  • 此类算法会修改源区间或目标区间元素的值
  • 值被修改的那个区间,不可以是属于关联容器的 

 3 删除算法

删除一个容器里的某些元素

删除不会使容器里的元素减少

  • 将所有应该被删除的元素看做空位子
  • 用留下的元素从后往前移,依次去填空位子
  • 元素往前移后,它原来的位置也就算是空位子
  • 也应由后面的留下的元素来填上
  • 最后,没有被填上的空位子,维持其原来的值不变 

删除算法不应作用于关联容器 

  • 算法复杂度都是 O(N)。 

4 变序算法

  • 变序算法改变容器中元素的顺序,但是不改变元素的值
  • 变序算法不适用与关联容器
  • 算法复杂度都是 O(N)。 

5 排序算法

  • 比前面的变序算法复杂度更高,一般是 O(Nlog(N)) 
  • 排序算法需要随机访问迭代器的支持
  • 不适用于关联容器和 list

6 有序区间算法

  • 要求所操作的区间是已经从小到大排好序的
  • 需要随机访问迭代器的支持
  • 有序区间算法不适用于关联容器和 list

 

多源动态最优潮流的分布鲁棒优化方法(IEEE118节点)(Matlab代码实现)内容概要:本文介绍了基于Matlab代码实现的多源动态最优潮流的分布鲁棒优化方法,适用于IEEE118节点电力系统。该方法结合两阶段鲁棒模型与确定性模型,旨在应对电力系统中多源输入(如可再生能源)的不确定性,提升系统运行的安全性与经济性。文中详细阐述了分布鲁棒优化的建模思路,包括不确定性集合的构建、目标函数的设计以及约束条件的处理,并通过Matlab编程实现算法求解,提供了完整的仿真流程与结果分析。此外,文档还列举了大量相关电力系统优化研究案例,涵盖微电网调度、电动汽车集群并网、需求响应、储能配置等多个方向,展示了其在实际工程中的广泛应用价值。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事能源系统优化工作的工程师。; 使用场景及目标:①用于研究高比例可再生能源接入背景下电力系统的动态最优潮流问题;②支撑科研工作中对分布鲁棒优化模型的复现与改进;③为电力系统调度、规划及运行决策提供理论支持与仿真工具。; 阅读建议:建议读者结合提供的Matlab代码与IEEE118节点系统参数进行实操演练,深入理解分布鲁棒优化的建模逻辑与求解过程,同时可参考文中提及的其他优化案例拓展研究思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值