随笔分类 - C++的思考
摘要:格式 %a 浮点数、十六进制数字和p-记数法(c99 %A 浮点数、十六进制数字和p-记法(c99) %c 一个字符(char) %C 一个ISO宽字符 %d 有符号十进制整数(int)(%ld、%Ld:长整型数据(long),%hd:输出短整形。) %e 浮点数、e-记数法 %E 浮点数、E-记数
阅读全文
摘要:概述 从 C++ 11 中开始,该语言支持两种类型的分配:复制赋值和移动赋值。其中的内部细节是咋样的呢?今天跟踪了一下,是个蛮有趣的过程。下面我们以一个简单的类来做个分析。 主函数 下面我们开始调试: 输出: 我们通过构造函数构造了三个变量,他们的值和 复制赋值 我们接着单步走: 可以发现首先调用了
阅读全文
摘要:起源于C语言 左值和右值都是从继承C语言继承过来的,那么为什么C语言中要创造“左值和右值”,在C语言中又是怎么定义的呢? 在Kernighan Kernighan和Ritchie创造了左值这个术语来区分某些表达与其他表达。在《The C Programming Language 》中他们写到"An
阅读全文
摘要:题:从“in.txt”读取数据,然后分奇偶分别存到“out_odd.txt”和“out_even.txt”中 出现了一个很奇怪的现象,文件out_odd.txt”和“out_even.txt”虽然创建了,可是文件是空,测试了一下“in.txt”中的数已经读出来了,为什么会出现这样奇怪的文件呢?我一度
阅读全文
摘要:先来看个问题:在一个string的vector容器中,寻找第一个长度大于4的元素。 很简单,只要使用find_if和一个函数就可以。可是假如我们之前不确定界定元素大小的临界值,这可怎么办呢?这是就可以使用“lambda”表达式。它的出现刚好可以弥补类型find_if这些泛型算法只能使用一元谓词的尴尬
阅读全文
摘要:"partition"和“stable_partition”设计的目的是根据一个谓词而把容器分为两部分。可是他们具体的区别在哪里呢?下面我们来验证一下。 output: 可以发现,stable_partition除了根据谓词把容器划分为两部分,还可以保持容器原有元素的顺序。
阅读全文
摘要:output: 很奇怪,按理说应该是sum: 15.1。可是实际问题出在哪里呢? 后来发现问题出在accumulate的第三个参数0上,0决定了返回数值的类型。
阅读全文
摘要:可以看出insert之后返回的是指向新插入元素的迭代器,利用这点可以向特定的位置反复插入元素。 (注意:如果容器中尾部之外需要插入元素的话,一般使用list而不使用vector,vector需要所有元素都移动,效率比较低。)
阅读全文
摘要:一般来说,对于重载函数来说,由于顶层const不影响传入函数的对象,所有两个函数只是顶层const的区别的话,两个函数是等价的,定义为重载函数是非法的。 但是,另一方面,对于指针和引用来说,可以通过区分形参指向的是常量还是非常量来实现函数重载。此时的const是底层的。 Example: Recor
阅读全文
摘要:#include #include int sum(std::initializer_list il) { int sum = 0; for (auto i : il) sum += i; return sum; } int main(void) { std::cout << sum({1, 2, 3, 4, 5}) << std::endl; re...
阅读全文
摘要:BOOL CreateFont( //指定字体高度(逻辑单位)。有三种取值: //>0,字体映射器将高度值转换为设备单位,并与可用字体的字符元高度进行匹配; //=0,字体映射器使用默认的高度值; //<0,字体映射器将高度值转换为设备单位,用其绝对值与可用字体的字符高度进行匹配。nHeight转换后的绝对值不应超过16384个设备单位。 int nHeight, //指定字体中字符的平均宽度(逻...
阅读全文
摘要:1.一个简单程序判断知否含有大写字母 初看之下这个程序没有问题,而且运行也正确,可是其中却隐藏了很深的陷阱; 会报错,无法判断常量字符串是否含有大小写。再看 常量引用无法赋值给变量引用,所以会报错,因此尽量使用常量引用。 在只需要读取对象的情况下,改为常量引用可以避免许多的麻烦。 2.把大写字母改为
阅读全文
摘要:题: 使用条件运算符从vector<int>中寻找哪些元素的值是奇数,然后将这些奇数的值翻倍。 我们试着用auto语句 我们试着用条件运算符去试试 有没有很神奇,哈哈! 参考:《c++ primer》第五版,学到第四章了!
阅读全文
摘要:输出 由上可以看出”auto“和”decltype“都可以用来帮我们定义一个变量。 对于一个表达式,却不知道表达式的值的类型: 1.当我们想要赋值的时候,可以用”auto“; 2.当我们想要使用这个表达式的类型来定义一个变量的时候,可以用”decltype“; 共同点: 由例1基本类型的一般定义,”
阅读全文
摘要:“顶层const"顾名思义就是对对象本身的一种限制,而使得对象本身为常量。 例: 同理,”底层const"通常与指针和引用等复合类型的基本类型有关,那是对指针、引用类型所牵连的对象的限制,那是对底层的限制。 例: 归根结底,限制的范围不同,有复合类型既可以是“顶层const”也可以是”底层const
阅读全文
摘要:例子: 输入运算符( >> ):从左侧istream对象读入数据存入右侧对象中,并返回istream对象作为运算结果。因此,std:cin是while判断的依据。 输入原理: 1(运行VS2010检测) 输入(cin)缓冲是行缓冲。当从键盘上输入一串字符,字符首先是存入缓冲区,cin对象会对缓冲区进
阅读全文
浙公网安备 33010602011771号