随笔分类 - 学习笔记
记录学习过程中的点点滴滴知识
摘要:一、题目描述 请写出一个根据秘密数字和朋友的猜测数返回提示的函数,用 A 表示公牛,用 B 表示奶牛。 请注意秘密数字和朋友的猜测数都可能含有重复数字。 示例 1: 示例 2: 说明: 你可以假设秘密数字和朋友的猜测数都只包含数字,并且它们的长度永远相等 二、题目分析 1)cnt1和cnt2分别代表
阅读全文
摘要:一、题目描述 给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式。 这里的遵循指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应模式。 示例1: 示例 2: 示例 3: 示例 4: 二、题目分析 题目比较
阅读全文
摘要:一、题目描述 根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞具有一个初始状态 live(1)即为活细胞, 或 dead(0)即为死细胞。每个细胞与其八个相邻位置(水平,垂
阅读全文
摘要:一、题目描述 给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n 。 示例: 二、题目解析 排列组合。第一位有9种,第二位有9种,....第10位有1种,大于10位肯定有重复,返回0 三、代码实现
阅读全文
摘要:1、形式:返回值 operator符号(参数列表){} 2、不能被重载的运算符::: 作用域运算符 .* . 成员访问运算符 ?: 条件运算符;某些运算符(逗号,,取地址&,逻辑或||,逻辑与&&)不应该被重载:1)重载之后无法保留运算对象的求值顺序,比如逻辑与&&,逻辑或||和逗号运算符;2)无法
阅读全文
摘要:1、new和delete表达式的工作机理 1)new表达式实际执行了三步 string *sp=new string("aaaa"); string *arr=new string[10];//string采用默认初始化 a、调用一个名为operator new(或者operator new[])的
阅读全文
摘要:1、new和delete有一些灵活性上的局限:new把内存分配和对象构造组合在了一起;delete将对象析构和内存释放组合在了一起。 2、当分配一大块内存时,我们通常计划在这块内存上按需构造对象,在此情况下,我们希望将内存分配和对象构造分离;这意味着我们可以分配大块内存,但只在真正需要的时候才真正执
阅读全文
摘要:转载自:C++中的宏定义 和 C++宏定义详解 一、#define解析 #define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期
阅读全文
摘要:代码部分转载自:C++ 类的静态成员及静态成员函数 1、类的静态成员与类本身相关,与类的各个对象无关,它存在于任何对象之外,所有的对象共享静态成员,所以在计算对象大小时,不包含静态数据成员。 2、静态成员函数不能声明为const的,因为这样非const对象就不能使用了;并且不包含this指针,因为t
阅读全文
摘要:一、题目描述 国际象棋中的骑士可以按下图所示进行移动: 我们将 “骑士” 放在电话拨号盘的任意数字键(如上图所示)上,接下来,骑士将会跳 N-1 步。每一步必须是从一个数字键跳到另一个数字键。 每当它落在一个键上(包括骑士的初始位置),都会拨出键所对应的数字,总共按下 N 位数字。 你能用这种方式拨
阅读全文
摘要:一、题目描述 给定一个方形整数数组 A,我们想要得到通过 A 的下降路径的最小和。 下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列。 示例: [1,4,7], [1,4,8], [1,5,7], [1,5,8], [1,5,9] [2,
阅读全文
摘要:1、noncopyable允许程序轻松地实现一个禁止拷贝的类,在头文件<boost/noncopyable.hpp>中 2、实现原理很简单:noncopyable的实现就是用了C++中的阻止拷贝, 参考《C++ Primer》第五版P449或者我的笔记类的设计(2)——拷贝控制(阻止拷贝) 1)方式
阅读全文
摘要:1、类的行为分类:看起来像一个值;看起来想一个指针。 1)类的行为像一个值,意味着他应该有自己的状态。当我们拷贝一个像值的对象时,副本和原对象是完全独立的。改变副本不会对原有对象有任何影响,反之亦然。 2)行为像指针的类则共享状态。当我们拷贝一个这种类的对象时,副本和原对象使用相同的底层数据。改变副
阅读全文
摘要:1、阻止拷贝的原因:对于某些类来说,拷贝构造函数和拷贝赋值运算符没有意义。举例:iostream类阻止了拷贝,以避免多个对象写入或者读取相同的IO缓冲。 2、阻止拷贝的方法有两个:新标准中可以将成员函数定义成删除的函数;在旧标准中可以使用private进行拷贝控制,只声明不定义。推荐使用第一种。 3
阅读全文
摘要:1、析构函数:释放对象使用的资源,并销毁对象的非static数据成员;析构函数不接受参数,因此不能被重载。对于一个给定类,有且只有一个析构函数。 2、析构函数的组成:一个函数体+一个析构部分(implicit);所完成的工作:先执行函数体,然后按照初始化成员的逆序销毁成员。在这里需要注意的是销毁成员
阅读全文
摘要:转载自:electrocrazy的博客 在linux环境下,vim是常用的代码查看和编辑工具。在程序编译出错时,一般会提示出错的行号,但是用vim打开的代码确不显示行号,错误语句的定位非常不便。那么怎样才能让vim显示代码的行号呢? 1 临时显示行号如果只是临时显示vim的行号,只须按ESC键退出编
阅读全文
摘要:一、题目描述 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 示例 1: 示例 2: 说明:你可以认为每种硬币的数量是无限的。 二、题目解析 //动态规划。状态:dp[i]组合成i最
阅读全文
摘要:表头文件 #include<sys/file.h> 定义函数 int flock(int fd,int operation); 函数说明 flock()会依参数operation所指定的方式对参数fd所指的文件做各种锁定或解除锁定的动作。此函数只能锁定整个文件,无法锁定文件的某一区域。 参数 ope
阅读全文
摘要:1、一个类通过定义五种特殊的成员函数来控制此类型对象的拷贝、移动、赋值和销毁:拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符和析构函数。(拷贝、移动、析构) 2、拷贝和移动构造函数定义了当用同类型的另一个对象初始化本对象时做什么;拷贝和移动赋值运算符定义了讲一个对象赋予同类型的另一个对象
阅读全文
摘要:转载自:C++常用库 C++ 资源大全 关于 C++ 框架、库和资源的一些汇总列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。 标准库 C++标准库,包括了STL容器,算法和函数等。 C++ Standard Library:是一系列类和函数的集合,使
阅读全文