zoukankan      html  css  js  c++  java
  • [c++菜鸟]《Accelerate C++》读书笔记

    第0章 开始学习C++                                                                                                                                                  

    1、<<的行为取决于它的操作数类型,<<会把它的右操作数的字符写到左操作数所指示的流中,他是结果就是它的左操作数。

    2、std::endl是一个控制器,如果把一个控制器写到流中,那么我们就可以控制这个流了,std::endl所做的动作就是结束当前的输出行。

    std::cout << "hello world" << std::endl;

    整个表达式所产生的值是std::cout,此外,作为其副作用,它还会把hello world写到标准输出流并结束当前的输出行

    第1章 使用字符串                                                                                                                                                      

    1、#include与using的区别

    C++里的头文件#include类似于C#解决方案中的引用

    C++仅仅using namespace是不够的,必须要将含有此namespace的文件包含进来

    C#中仅仅使用using namespace是不够的,必须要将含有此namespace的文件引用进来(如System.dll是工程在创建后自动引用的)

    2、常量在定义的时候必须初始化,但对常量赋的值不一定是常量

    const std::string greeting = "Hello, " + name;

    3、字符串除了用 = 赋值,还可以用 ( ) 赋值

    std::string stars(10,'*');  //给stars赋值10个*  即********** (右边只能传字符,不能传字符串)

    4、可以用+来把一个字符串和一个字符串直接量连接起来,但不能连接两个字符串直接量

    第2章 循环和计数                                                                                                                                                      

    1、size_type  我们使用这种类型,大到可以保存一个字符串中的最大字符个数

    好处:不管要保存的string对象的字符个数有多少,都可以保证足够大的存储长度

    如在有16位int型的机器上,用int类型变量最大只能表示32767个字符的string对象,而用string::size_type不会导致溢出

    const std::string::size_type cols = greeting.size() +2;

    2、算术运算符的优先级比关系运算符的高

    r==row-1 等价于 r==(row-1)

    第3章 使用批量数据                                                                                                                                                   

    1、在程序中,如果两个以上的字符串直接量仅仅是被空白符分隔开的话,那么这些字符串直接量就会被自动连接到一起

    cout << "Enter all your homework grades,  "
            "followed by end-of -file:  ";
    //等价于
    cout << "Enter all your homework grades,  followed by end-of -file:  ";

    2、cout.precision() 流在进行浮点数输出时所使用的精度

          setprecision 为流的后继输出设置一个特定的有效位数。如编写setprecision(3)后,输出的形式通常是(十进制)小数点前两位,后一位

    3、while (cin >> x) 用cin来作为条件等价于监测最近一次从cin读数据的尝试是否成功。

      以下的几种情况,我们从一个流读数据的尝试可能会失败:

    (1)到达了输入文件的结尾

    (2)碰到的输入跟试图读取的变量类型不一致

    (3)系统在输入装置中检测到一个硬件问题

    4、vector保存了一系列具有相同类型的数值

    push_back函数:添加一个新元素到向量的末尾

    vector<double> homework;
    homework.push_back(x);

    5、typedef表示定义的名称是特定类型的替代名

    第4章 组织程序和数据                                                                                                                                                

    1、domain_error异常在头文件<stdexcept>中,表示函数参数的取值不合法

    2、const vector<double>&

    对参数类型为double的向量常量的引用,(双精度向量常量引用)

    vector<double> homework;
    //hw是homework的另一个名称,两者等价
    vector<double>& hw = homework;
    //const确保我们无法改变homework的值
    const vector<double>& chw = homework;
    
    //定义引用的引用跟定义原对象的引用效果是一样的
    vector<double>& hw2 = hw;          //hw2 hw homework等价
    const vector<double>& chw2 = chw;  //chw2和chw等价

    3、左值,用来指示非临时对象的值。

    如果一个变量是左值,那么也可以是引用,或是返回一个引用的函数的调用结果。

    与非常量引用参数对应的参数必须是左值

    4、istream的clear()方法,清除了所有错误标记以使输入动作可以继续

    5、谓词 是一个函数,返回bool类型

    bool compare(const Student_info& x, const Student_info& y)
    {
        return x.name < y.name;  
    }
    sort(student.begin(), students.end(), compare);

    6、setw(n) 控制器,控制输出流的格式。把输出项填充成有特定数目的字符集,(填充空格,让字符达到指定长度)

    7、头文件应该使用完整的限定名而不是使用using,否则包含头的程序都会获得一个using声明,而不管我们是否需要

    第5章 使用顺序容器,并分析字符串                                                                                                                          

    1、*间接引用运算符

    .的优先级比*高 所以要写成(*iter).name  等价于 iter->name

    2、如果容器只是(或主要是)从尾部增长和缩小的话,vector比list性能好

    如果是从容器中删除很多元素,list比vector速度更快

    索引,vector支持,list不支持

    3、使用erase和push_back会使vector的迭代器失效,而不会使list的迭代器失效

    4、getline 读入一整行 (包含行中空格)

  • 相关阅读:
    学习篇之String()
    js之Math对象
    js之date()对象
    css之描点定位方式
    js详解之作用域-实例
    js精要之构造函数
    js精要之继承
    js精要之模块模式
    js精要之对象属性
    js精要之函数
  • 原文地址:https://www.cnblogs.com/code1992/p/9295678.html
Copyright © 2011-2022 走看看