摘要:
问题概述 如下由' '和'.'符号组成的图案表示一个迷宫,在这个迷宫中,'.'表示可以走的路径,可以通过,而' '表示迷宫的墙,是不能穿过的。我们的目的就是要从迷宫的起点走到终点,找出一条合适的路径,当然最短路径最好。 解决方法 算法思想 站在迷宫中的一个位置上,环顾四周,总共有四个方向可以选择,而 阅读全文
摘要:
问题概述 骑士巡游问题对国际象棋爱好者来说是较有意思的难题之一。这个问题是:称为骑士的棋子在一个空的棋盘上行进,能否在64个方格棋盘上的每个方格都走一次且只走一次。 在国际象棋中,骑士的移动路线是L形的(在一个方向上走两格,在垂直方向上走一格)。因此在一个空棋盘中间的方格上,其实可以有8种不同的移动 阅读全文
摘要:
简单理解 桶排序是通过使用不同的桶容器来容纳序列中的数,然后再按桶的顺序进行收集,以实现有序的序列。而基数排序则是使用十个桶容器将一个待排序的序列排序。其中十个桶的大小是可以根据需要进行改变的,分别代表0 9十个数字,用来容纳每一趟排序中的相应位置上的数。 核心算法思想描述 以序列97、3、100、 阅读全文
摘要:
概述 weak_ptr是一种不控制所指向对象生存期的智能指针,它指向一个由shared_ptr管理的对象。将一个weak_ptr绑定到一个shared_ptr不会改变shared_ptr的引用计数。并且一旦最后一个shared_ptr被销毁,其所指向的对象就会被释放,就算此时仍有weak_ptr指向 阅读全文
摘要:
概述 与shared_ptr不同,某个时刻只能有一个unique_ptr指向一个给定对象。当unique_ptr被销毁时,它所指向的对象也被销毁。同时,unique_ptr也没有类似于make_shared的标准库函数,当我们定义一个unique_ptr时,需要将其绑定到一个new返回的指针。因此初 阅读全文
摘要:
概述 shared_ptr允许多个指针指向同一个对象。它是一个模板,当我们创建shared_ptr时,需要提供额外的信息——指针可以指向的类型。例如: 默认初始化的shared_ptr中保存一个空指针(nullptr)。智能指针的使用方式与普通指针类似,解引用一个智能指针返回它所指向的对象。总体支持 阅读全文
摘要:
初始值 当对象在创建时获得了一个特定的值,我们说这个对象被初始化了。用于初始化变量的值可以是任意复杂的表达式。当一次定义了两个或多个变量时,对象的名字在定义后就马上可以使用了。例如我们可以这样使用: // 使用刚刚定义的price初始化discount double price = 109.99, 阅读全文
摘要:
无返回值的函数 没有返回值的return语句只能用于返回类型是void的函数中。返回void的函数可以没有return语句,这类函数的最后一句后面会隐式地执行return。而如果void函数需要在函数中间退出,可以使用return语句。例如一个值交换的函数: 有返回值的函数 只要函数的返回类型不是v 阅读全文
摘要:
定义 就像被绑定到其他对象上一样,我们能够将引用绑定到一个const类型的对象上,这种行为被称之为使用了一个对const对象的引用。与普通引用不同的是,对const的引用不能被用来修改它所绑定的对象。例如: const引用与对const的引用区分 C++程序员常常把“对const的引用”简称为“co 阅读全文
摘要:
常量表达式 常量表达式是指值不会改变并且在编译过程就能得到计算结构的表达式。一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定,例如: constexpr变量 C++11规定,允许将变量声明为constexpr类型以便由编译器来验证变量值是否是一个常量表达式。声明为constexpr 阅读全文