-
什么叫做优秀的软件架构
所属栏目:[语言] 日期:2022-07-17 热度:172
开始学习设计模式前,我们先来看看软件架构的设计过程,及需要达成的目标和尽量避免的陷阱。 代码复用 无论是开发哪种软件产品,成本和时间都是最重要的。较少的开发时间意味着可以比竞争对手更早进入市[详细]
-
如何正确运用设计模式?
所属栏目:[语言] 日期:2022-07-17 热度:158
设计模式不是为每个人准备的,而是基于业务来选择设计模式,需要时就能想到它。要明白一点,技术永远为业务服务,技术只是满足业务需要的一个工具。我们需要掌握每种设计模式的应用场景、特征、优缺点,以及每种设计模式的关联关系,这样就能够很好地满足[详细]
-
开闭原则 面对对象设计原则
所属栏目:[语言] 日期:2022-07-17 热度:200
在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 7 条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。我们将在下面的几节中依次来介绍这 7 条原则,本节首先介绍开闭原则。 开闭[详细]
-
UE4增添人物动画之前后左右移动
所属栏目:[语言] 日期:2022-07-17 热度:143
这也一节,我们来使用动画状态机的逻辑。 1) 编译一下,回到 UE4 编辑器双击我们的动画蓝图,选择动画图标,创建一个状态机,并双击状态机。 2) 点击引脚拉出来一个节点选择添加状态。 3) 更改名字为 Idle 说明是静止状态,然后在 Idle 节点拉出一个 Move[详细]
-
UML类图及类图之间的联系
所属栏目:[语言] 日期:2022-07-17 热度:169
在 UML 2.0 的 13 种图中,类图(Class Diagrams)是使用频率最高的 UML 图之一。类图描述系统中的类,以及各个类之间的关系的静态视图,能够让我们在正确编写代码之前对系统有一个全面的认识。类图是一种模型类型,确切地说,是一种静态模型类型。类图表[详细]
-
UML统一建模语言是啥
所属栏目:[语言] 日期:2022-07-17 热度:99
UML(Unified Modeling Language,统一建模语言)是用来设计软件蓝图的可视化建模语言,是一种为面向对象系统的产品进行说明、可视化和编制文档的标准语言,独立于任何一种具体的程序设计语言。 1997 年 UML 被国际对象管理组织(OMG)采纳为面向对象的建[详细]
-
软件设计模式概论
所属栏目:[语言] 日期:2022-07-17 热度:158
本节是后面各章学习的基础,从整体上介绍软件设计模式的概念与特点、软件设计模式的基本要素,以及 GoF 的 23 种设计模式简介。 软件设计模式的产生背景 设计模式这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977 年,美国著名建筑[详细]
-
GoF 的 23 种设计模式的分类和性能
所属栏目:[语言] 日期:2022-07-17 热度:171
设计模式有两种分类方法,即根据模式的目的来分和根据模式的作用的范围来分。 前面说明了 GoF 的 23 种设计模式的分类,现在对各个模式的功能进行介绍。 单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓[详细]
-
C++ STL distance 函数用法详解 一看就懂
所属栏目:[语言] 日期:2022-07-17 热度:124
我们知道,作用于同一容器的 2 个同类型迭代器可以有效指定一个区间范围。在此基础上,如果想获取该指定范围内包含元素的个数,就可以借助本节要讲的 distance() 函数。 distance() 函数用于计算两个迭代器表示的范围内包含元素的个数,其语法格式如下: t[详细]
-
C++ find_if 和find_if_not 函数用法详解
所属栏目:[语言] 日期:2022-07-17 热度:79
继《C++ find()函数》一节后,本节再讲解 2 个和 find() 功能类似的函数,分别为 find_if() 函数和 find_if_not() 函数。 值得一提的是,find_if() 和 find_if_not() 函数都定义在algorithm头文件中。因此在使用它们之前,程序中要先引入此头文件: #inclu[详细]
-
C++ find_end 函数详解
所属栏目:[语言] 日期:2022-07-17 热度:105
find_end() 函数定义在algorithm头文件中,常用于在序列 A 中查找序列 B 最后一次出现的位置。例如,有如下 2 个序列: 序列 A:1,2,3,4,5,1,2,3,4,5 序列 B:1,2,3 通过观察不难发现,序列 B 在序列 A 中出现了 2 次,而借助 find_end() 函数,可以轻松的[详细]
-
C++ find_first_of 函数完全攻略
所属栏目:[语言] 日期:2022-07-17 热度:78
在某些情境中,我们可能需要在 A 序列中查找和 B 序列中任意元素相匹配的第一个元素,这时就可以使用 find_first_of() 函数。 仅仅用一句话概述 find_first_of() 函数的功能,读者可能并不理解。别急,下面我们将从语法格式的角度继续阐述该函数的功能。 f[详细]
-
C++ adjacent_find 函数用法详解
所属栏目:[语言] 日期:2022-07-17 热度:86
adjacent_find() 函数用于在指定范围内查找 2 个连续相等的元素。该函数的语法格式为: //查找 2 个连续相等的元素 ForwardIterator adjacent_find (ForwardIterator first, ForwardIterator last); //查找 2 个连续满足 pred 规则的元素 ForwardIterator[详细]
-
C++ search 函数用法完全攻略
所属栏目:[语言] 日期:2022-07-17 热度:123
通过《C++ find_end()函数》一节的讲解我们知道,find_end() 函数用于在序列 A 中查找序列 B 最后一次出现的位置。那么,如果想知道序列 B 在序列 A 中第一次出现的位置,该如何实现呢?可以借助 search() 函数。 search() 函数定义在algorithm头文件中,[详细]
-
C++ search_n 函数用法 超级详细
所属栏目:[语言] 日期:2022-07-17 热度:195
《C++ search()函数》一节中,已经详细介绍了 search() 函数的功能和用法。在此基础上,本节再介绍一个功能类似的函数,即 search_n() 函数。 和 search() 一样,search_n() 函数也定义在algorithm头文件中,用于在指定区域内查找第一个符合要求的子序列。[详细]
-
C++ partition 和stable_partition 函数详解
所属栏目:[语言] 日期:2022-07-17 热度:82
partition 可直译为分组,partition() 函数可根据用户自定义的筛选规则,重新排列指定区域内存储的数据,使其分为 2 组,第一组为符合筛选条件的数据,另一组为不符合筛选条件的数据。 举个例子,假设有一个数组 a[9],其存储数据如下: 1 2 3 4 5 6 7 8 9[详细]
-
C++ partition_copy 函数详解
所属栏目:[语言] 日期:2022-07-17 热度:190
《C++ partition()和stable_partition()函数》一节中,已经详细介绍了 partition() 和 stable_partition() 函数的功能和用法。不知道读者是否发现,这 2 个函数在实现功能时,都直接修改了原序列中元素的存储位置。 而在某些场景中,我们需要类似 partitio[详细]
-
C++ find函数用法详解
所属栏目:[语言] 日期:2022-07-17 热度:158
find() 函数本质上是一个模板函数,用于在指定范围内查找和目标元素值相等的第一个元素。 如下为 find() 函数的语法格式: InputIterator find (InputIterator first, InputIterator last, const T val); 其中,first 和 last 为输入迭代器,[first, last)[详细]
-
C++ fill和fill_n函数用法解说
所属栏目:[语言] 日期:2022-07-16 热度:194
fill() 和 fill_n() 算法提供了一种为元素序列填入给定值的简单方式,fill() 会填充整个序列; fill_n() 则以给定的迭代器为起始位置,为指定个数的元素设置值。下面展示了 fill() 的用法: std::vectorstring data {12}; // Container has 12 elements st[详细]
-
C++ STL all_of any_of及none_of算法细说
所属栏目:[语言] 日期:2022-07-16 热度:188
algorithm 头文件中定义了 3 种算法,用来检查在算法应用到序列中的元素上时,什么时候使谓词返回 true。这些算法的前两个参数是定义谓词应用范围的输入迭代器;第三个参数指定了谓词。检查元素是否能让谓词返回 true 似乎很简单,但它却是十分有用的。 例[详细]
-
C++ equal STL equal 对比算法详解
所属栏目:[语言] 日期:2022-07-16 热度:103
可以用和比较字符串类似的方式来比较序列。如果两个序列的长度相同,并且对应元素都相等,equal() 算法会返回 true。有 4 个版本的 equal() 算法,其中两个用 == 运算符来比较元素,另外两个用我们提供的作为参数的函数对象来比较元素,所有指定序列的迭代[详细]
-
Qt是什么?Qt简介很全面
所属栏目:[语言] 日期:2022-07-16 热度:164
Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。 Qt 是纯 C++ 开发的,所以学好 C++ 非常有必要,[详细]
-
Qt和其它GUI库的比较
所属栏目:[语言] 日期:2022-07-16 热度:125
世界上的 GUI 库多如牛毛,有的跨平台,有的专属于某个操作系统;有的只有 UI 功能,有的还融合了网络通信、多媒体处理、数据库访问等底层功能。 Windows 下的 GUI 库 Windows 下的 GUI 解决方案比较多: 基于 C++ 的有 Qt、MFC、WTL、wxWidgets、DirectUI[详细]
-
学习QML或是C++
所属栏目:[语言] 日期:2022-07-16 热度:127
Qt4 时代的主流就是传统部件(或叫控件)编程,所用的语言一般是 C++。 Qt5 诞生之时,正是手机移动设备蓬勃发展的时候,而传统的 C++ 部件编写的界面对手机应用程序非常方便,比如手机屏幕显示随意翻转, 这在传统桌面程序里基本遇不到,谁会将 22 寸显示[详细]
-
C++ lower_bound 函数用法解析
所属栏目:[语言] 日期:2022-07-16 热度:116
前面章节中,已经给大家系统地介绍了几个查找函数,如 find()、find_if()、search() 等。值得一提的是,这些函数的底层实现都采用的是顺序查找(逐个遍历)的方式,在某些场景中的执行效率并不高。例如,当指定区域内的数据处于有序状态时,如果想查找某个[详细]