20140404 TCPL 第二章 C++概览


C++是一种通用的程序设计语言,特别是面向系统程序设计

1、是一个更好的C。

2、支持数据抽象。

3、支持面向对象的程序设计。

4、支持通用型程序设计。

对于语言特征的细节理解,也不能替代对该语言以及使用它的基本技术的全局性认识。

该章主要用于强调设计方法以及组织程序的方式,而不是语言细节。


2.3

过程式程序设计的范型:确定你需要哪些过程,采用自己能找到的最好的算法。

2.4

模块程序设计:确定你需要那些模块;将程序分为一些模块,是数据隐藏于模块之中。

C++支持C语言中有关分别编译的概念。这种机制可以用于将程序组织为一组部分独立的片段。

但当一个程序被设计为一组模块后,对于错误的处理也必须在这些模块的基础上考虑。

通常,解决方法是让模块的实现者去针对可能抛出的异常进行描述。

2.5

数据抽象。模块化是一切成功的大型程序的一个最基本特征。

C++通过用户自定义类型解决了通过模块实现用户自定义类型:确定你需要哪些类型,为每一个类型提供完整的一组操作。

大部分模块表示为用户定义类型会更好一些。

2.6

面向对象的程序设计:确定你需要哪些类,为每一个类提供完整的一组操作,利用继承去明确地表示共性。

在不存在共性的地方,数据抽象就足够了。

对于好的设计而言,数据抽象是最基本的东西。

但是,用户定义类型可能还是不够灵活。

2.7

通用性程序设计:确定你需要哪些算法,将它们参数化,使它们能够对各种各样适当的类型和数据结构工作。

模板是一种编译时的机制,并不会引起任何额外的运行时开销。



考察C++的各种细节的真实目的在于能够应用它们,在有效设计的环境 里,去支持良好的程序设计风格。


作者忠告:

1、不用害怕,一切都会随着时间的推移而逐渐明朗起来。

2、你并不需要在知道了C++的所有细节之后才能写出好的C++程序。

3、请特别关心程序设计技术,而不是各种语言特征。



基于python实现的粒子群的VRP(车辆配送路径规划)问题建模求解+源码+项目文档+算法解析,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 算法设计的关键在于如何向表现较好的个体学习,标准粒子群算法引入惯性因子w、自我认知因子c1、社会认知因子c2分别作为自身、当代最优解和历史最优解的权重,指导粒子速度和位置的更新,这在求解函数极值问题时比较容易实现,而在VRP问题上,速度位置的更新则难以直接采用加权的方式进行,一个常见的方法是采用基于遗传算法交叉算子的混合型粒子群算法进行求解,这里采用顺序交叉算子,对惯性因子w、自我认知因子c1、社会认知因子c2则以w/(w+c1+c2),c1/(w+c1+c2),c2/(w+c1+c2)的概率接受粒子本身、当前最优解、全局最优解交叉的父代之一(即按概率选择其中一个作为父代,不加权)。 算法设计的关键在于如何向表现较好的个体学习,标准粒子群算法引入惯性因子w、自我认知因子c1、社会认知因子c2分别作为自身、当代最优解和历史最优解的权重,指导粒子速度和位置的更新,这在求解函数极值问题时比较容易实现,而在VRP问题上,速度位置的更新则难以直接采用加权的方式进行,一个常见的方法是采用基于遗传算法交叉算子的混合型粒子群算法进行求解,这里采用顺序交叉算子,对惯性因子w、自我认知因子c1、社会认知因子c2则以w/(w+c1+c2),c1/(w+c1+c2),c2/(w+c1+c2)的概率接受粒子本身、当前最优解、全局最优解交叉的父代之一(即按概率选择其中一个作为父代,不加权)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值