C++ primer学习记录(个人猜想未测试版本)
学习版本:第五版。
本博文主要记录个人曾经并不知晓知识细节。
因为linux下的编译环境还未进行学习。所以实际代码测试将在今后完成。
红色:需确认。
蓝色:重点。
1)const对象设定为仅在文件内有效。个人认为:.h .cpp属于同文件的概念(未测试)。
2)constexpr:常量表达式标示符。使用此作为前/后缀时,表示此变量/函数为常量表达式。但,具体用途?以及为何需要这样的标示符?
3)但凡使用迭代器的循环,都不要向迭代器增加元素。因为增加元素可能导致容器重新分配内存,导致后续迭代器操作 可能 不按照逻辑执行。
4)迭代器循环中,可以使用删除(earse)操作。但需要注意迭代器执行情况。在可能情况下,尽量不对迭代器循环进行修改。
5)auto未c++ 11新添加内容。需要确定是否好用和代码可读性等等问题。
6)数组的初始化必须是常量表达式。例子:unsinged cnt = 42; string bad[cnt]; //错误,cnt不是常量表达式。
7)不允许对数组进行赋值或者copy。(应该是指对数组指针,而不是数组内容。)
8)在递增前的数据不需要时,尽量使用前置版本( ++i )。因为后置版本需要储存原数据(编译器通常不优化)。也适用于递减版本。
9)位运算不要在有符号数据中使用。容易产生结果不确定问题。
10)sizeof运算符三种情况:p是指针,array_p是数组。
1,sizeof( p ); //指针大小。
2,sizeof( *p ); //指针指向的对象大小。
3,sizeof( array_p ); //数组所占用的内存大小。
注意:数组是一个比较例外的情况。
11)const_cast可以在 const 和 非const之间进行转换。
12)在while条件部分生成的迭代器每次循环也会被注销(开始时也会创建)。
13)泛型算法不依赖容器(不会执行容器操作),但依赖迭代器操作。
14)使用泛型算法前,程序员需要保证 容器可以接受算法要求。例:容器大小(算法fill)。
15)需要进一步了解常函数特性。
C++ primer学习记录(个人猜想未测试版本)的更多相关文章
- FPGA学习记录 - Quartus II 未使用管脚设置为三态输入
未使用管脚设置为三态输入 Assignments -> Device 或双击器件
- 《java从入门到精通》学习记录
目录 <Java从入门到精通>学习记录 3 基础的基础部分: 3 一. 常量与变量 3 1. 掌握: 3 (1) .常量与变量的声明方式: 3 (2) .变量的命名规则: 3 (3) .变 ...
- Java设计模式学习记录-状态模式
前言 状态模式是一种行为模式,用于解决系统中复杂的对象状态转换以及各个状态下的封装等问题.状态模式是将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象的状态可以灵活多变.这样在客户端使 ...
- C++ Primer学习笔记(二)
题外话:一工作起来就没有大段的时间学习了,如何充分利用碎片时间是个好问题. 接 C++ Primer学习笔记(一) 27.与 vector 类型相比,数组的显著缺陷在于:数组的长度是固定的,无法 ...
- 转 Python3 错误和异常/ Python学习之错误调试和测试
########sample 0 https://www.cnblogs.com/Simon-xm/p/4073028.html except: #捕获所有异常 except: <异常名> ...
- JavaScript学习记录四
title: JavaScript学习记录四 toc: true date: 2018-09-16 20:31:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- JavaScript学习记录一
title: JavaScript学习记录一 toc: true date: 2018-09-11 18:26:52 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- Python全栈工程师系列学习之学习记录
@ 目录 前言 Day 01 一.python的历史和种类 二.安装python解释器以及配置环境变量 三.变量.常量和注释 Day 02 Day 03 Day 04 Day 05 Day 06 一. ...
- git原理学习记录:从基本指令到背后原理,实现一个简单的git
一开始我还担心 git 的原理会不会很难懂,但在阅读了官方文档后我发现其实并不难懂,似乎可以动手实现一个简单的 git,于是就有了下面这篇学习记录. 本文的叙述思路参照了官方文档Book的原理介绍部分 ...
随机推荐
- mysql Fatal error encountered during command execution
由于在操作中使用了自定义参数. 所以得在连接字符串中加上Allow User Variables=True: 表示允许用户自定义参数.
- 从C到C++的升级
C++的语言类型 C++是静态的强类型语言. 静态语言:数据类型在编译期间检查,因此在写程序时需要声明变量的类型 强类型语言:强调数据类型,不同的数据类型间的转换需要进行强制类型转换 C与C++的关系 ...
- 我的django之旅(一)
我的django之旅(一) 标签(空格分隔):django web 1.检验我们的python和django版本 liao@spring ~ $ python --version Python 2.7 ...
- [Head First Python]5. 推导数据:处理数据
读取4个文件内容,格式化数据,升序,显示每个文件前3个数据 julie.txt 2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21 james.txt 2-34, ...
- Python学习笔记四,dict和set
dict是字典dictionary的缩写,他存放的是键值对key/value,用花括号表示,格式为d={'micheal':99,'jack':88} 当我们访问的时候直接print(d['miche ...
- SQL Server 无法打开物理文件的 2 种解决办法
解决方法: 方法1.无法打开可以能是没有权限.如果是这样以管理员身份运行Managerment Studio就可以了. 方法2.找到指定的数据库文件.右键属性-->安全-->勾上 ‘完全 ...
- IOS开发之动态获取模型的属性值
#import "model.h" #import <objc/runtime.h> @implementation model +(instancetype)mode ...
- mysql null值转换
1.如果为空返回0 select ifnull(null,0) 2.如果为空返回0,否则返回1 select if(isnull(col),0,1) as col.
- MySQL库目录下db.opt文件的作用
细心的朋友可能会发现有时候在某些库目录下有个 db.opt 文件,那这个文件是干什么用的呢?如果你用vi等编辑器打开看的话,内容很简单,是用来记录该库的默认字符集编码和字符集排序规则用的.也就是说如果 ...
- android中通过自定义xml实现你需要的shape效果 xml属性配置
在Android开发过程中,经常需要改变控件的默认样式, 那么通常会使用多个图片来解决.不过这种方式可能需要多个图片,比如一个按钮,需要点击时的式样图片,默认的式样图片,然后在写一个selector的 ...