“Accelerated C++” 阅读笔记(一)

3月16日

  • 局部变量,只要程序执行到 } 的时候,变量就会被销毁,内存也会被回收
  • 当使用cin读取字符串时,会忽略空白符(空格、制表符、退格符、终止符)
    • \t是制表符,按键盘上的Tab键就是,它是一个字符,但显示的时候通常会是按8个字符宽度跳到下一个制表位置
    • 使用转义符\b一次,光标将从原应该显示的位置向前退一格
    • 终止符\0
  • string dd = "fuck you";
    string ff(dd.size(), 'h');
    是调用成员函数,能容纳最多4个字符,但只有最后一个字符有效
  • cout << s 将s的所有字符 不做任何格式修改的保存到s中
  • cin >> s 将is中的所有字符,忽略空白符的保存到s当中
  • "+" 两端不能都是字符串字面量或char类型值
  • string::size_type = ff.size(); size_type是string表示长度的变量
  • 可以不使用using namespace; 来声明,而是用 using std::out; 来逐一进行using声明
  • 不对称区间[n,m)比对称区间[n,m]好,因为不对称区间有m-n个元素,而对称区间有m-n+1个元素
  • 推荐使用 != 而不是 < (没看懂他说的原因,好像是因为使用<会至少输入n-m个而不是n-m个,待解释?)
  • <ios> 定义streamsize类型,是输入输出的长度
  • <iomainip> 定义控制符setprecision,说明希望输出中有多少位有效数字。用法:cout << setprecision(3) << 1.23456; 输出为1.23,控制其之后输出的有效数字
  • 也可以用sizestream cc = cout.precision(3)来设置精度,返回的是原有的精度,3用来设置想要的精度
  • float只有6位有效数字,在使用浮点数进行计算时,几乎都是使用double(至少十五位?),甚至double的速度更快
  • double sum = 0 在初始化时系统会把0转化为0.0,可以在定义时定义为0.0,不过对系统的开销一样,无所谓
  • 全局变量,或静态局部变量,如int在全局域中声明的变量会自动初始化为0
  • 如果变量是在局部域中定义的,则系统不会向它提供初始值0,这些对象被认为是未初始化,其值随机(有的编译器可能会为你初始化为0,但千万别依赖于这种可能行为,因为它会给你的程序带来未定义的行为)
  • 推荐使用标准库的size_type,例如typedef vector<double>::size_type vec_sz;
  • <algorithm>库中包含了sort函数,sort(a,b)可以对区间[a,b)进行非降序排列,max(a,b)也在这头文件里
  • sort(homework.begin(), homework.end()); 就可以排序,不是创建新的vector,而是对homework进行重排
  • 如果一个表达式中同时存在普通的整形和无符号类型的整形,运算的结果一定是正数,就算结果小于0,不过如果小于0的话就是个随机(?)正数了
  • 使用vector时,要包含头文件<vector>,平常都不用包含估计是opencv.hpp里已经包含了
  • v.end(); 返回的是v中最后一个元素的下一个位置(?)
  • 当retun 0 时表示程序正常退出,一般来说任何非0值都代表着某种非正常退出
  • <stdexcept>库中包含domain_error对象,例:throw domain_error("size should not be 0");
  • vector<double> homework; 
    const vector<double> &hwk = homework;

    表示hwk是homework的只读别名字,好处是
    1. 系统可以直接访问实参,而不是复制实参,并且不会改变形参的值(否则实参的值也会改变)
    2. 因为形参是对常量的引用,所以参数既可以是常量vector,也可以是正常的vector(amazing)
    3. 由于是引用实参,避免了复制实参的开销
  • 与非常量引用的形参对应的实参必须是一个左值,所谓左值就是一个非临时量(比如直接使用fuck()作为参数是不行的),因为如果这样当函数返回时输入的形参就会被销毁,相当于我们修改了一个无法访问的数据
  • 一个非常好的经验是,避免一个单独的语句产生多个副作用

坑:

  • throw catch try 还不清楚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值