• 序言

    • 看了看表,再看了看书,2个小时就没啦(又到了吃中饭的时间,O(∩_∩)O哈哈~)。一个上午感觉啥也没干呢,不过还是从书上看到了一些东西,对于这些基础的知识,还是有些东西没有记得很深,所以还是花了许久的时间回味总结。三章内容主要是挑出了自己不是很熟悉和很懂的地方或者是面试中会用到的一些难点来记录。
  • string类

    • 这一章大体上是一些基础,没啥好讲的。就记录一些简单的易忘的东西吧

      •   string对象的初始化:基本的初始化操作(有点和容器之列的对象类似),但是string对象输入输出操作是不会包含对应的空格的(用cin操作输入string,碰到空格被视为两个单独的字符串)
      • string对象的size函数返回的是一个无类型的size_type函数,这个函数很有意思,下面重点介绍一下这个fat girl吧。对了它还有一个孪生兄弟:size_t
        •    size_type:为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned
                由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型.string::size_type它在不同的机器上,长度是可以不同的,并非固定的长度。但只要你使用了这个类型,就使得你的程序适合这个机器。与实际机器匹配。
                size_t 使用的时候头文件需要 <cstddef> ;size_type 使用的时候需要<string>或者<vector>
            string::size_type 制类型一般就是unsigned int, 但是不同机器环境长度可能不同 win32 和win64上长度差别;size_type一般也是unsigned int
                实际上两者之间还是不同的:size_t不是容器概念;size_type是容器概念,没有容器不能使用。

           #include<iostream>
          #include<vector>
          using namespace std;
          int main()
          {
          cout<<" typeid(size_t).name() = "<<typeid(size_t).name()<<endl;
          cout<<" typeid(vector<int>::size_type).name() = "<<typeid(vector<int>::size_type).name()<<endl; return ;
          }
        •   上面讲了一堆,来总结一下
          •   到底什么是size_type类型呢?

            •   string类类型和许多其他库类型都定义了一些配套类型(companion type)。通过这些配套类型,库类型的使用就能与机器无关。size_type就是这些配套类型中的一种。size_type被定义为与unsigned型(unsigned int, unsigned long)具有相同的含义,而且可以保证足够大能够存储任意string对象的长度。为而来使用由string类型定义的size_type类型。程序员必须加上作用于操作符来说明所使用的size_type类型是由string类定义的。
            •   我们为什么不适用int变量来保存string的size呢?

              使用int变量的问题是:有些机器上的int变量的表示范围太小,甚至无法存储实际并不长的string对象。如在有16位int型的机器上,int类型变量最大只能表示32767个字符的string对象。而能容纳一个文件内容的string对象轻易就能超过这个数字,因此,为了避免溢出,保存一个string对象的size的最安全的方法就是使用标准库类型string::size_type().

              一点注意:虽然是在学习标准库string的时候巧遇了size_type类型,但是,其实vector库也可以定义size_type类型,在vector库中还有一个difference_type类型,该类型用来存储任何两个迭代器对象间的距离,所以是signed类型的。

            • 什么是size_t类型呢?其实本质上和size_type没有多大区别

              其实size_t和size_type类似,size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件stddef.h的C++版本.它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。用法如下:

              bitset<32> bitvec;

              size_t sz=bitvec.size();

              另外sizeof操作符的返回值的类型也为size_t哦

    • 标准库vector

      •   对我来说其实这一部分的知识吧,都应该非常熟悉了(主要是还是因为下功夫看了两遍STL源码,加上平时都是比较喜欢用STL的),所以这里就记录一些比较细节的东西。

        •   vector初始化赋值操作(C++11新增):容器类的主要赋值还是那么几类,网上都是有的(一个套路),这次在树上无意看到C++11新增了一种类似数组的赋值方式。
                      vector<int> res = {"1", "2", ...}
                      和数组类似的赋值方式也是可行的

        •   还有就是迭代器的一些指向问题和迭代器的基本加减运算问题也是比较值得注意的(容易出错)。例子的话就不写了,练多了就简单了。
    • 多维数组
      •   其实这部分内容在C语言学习的时候我就没有很好的弄懂,今天看了这本书感觉又懂了一点,但是主要还是对C++11那个for范围遍历二维数组的处理有了一点更深的认识。

        •   比如这个例子:

          size_t cnt = ;
          for (auto &row : is)
          for (auto &col : row){
          col = cnt;
          ++cnt;
          }

          这个例子是用auto进行遍历的二维数组,is是一个二维的,row表示的是is中每一行的一维数组,col表示的是每个一维数组的元素。这里最主要的是每个auto变量都是引用的形式,这个主要的目的是放置数组直接变成指针了(隐式转换)  eg: int a[10] = {0}; int *pt = a;   这样会发生数组变成指针的隐式转换。

      •   其他的内容感觉影响都不是很大,基础了。
  • 表达式

    •   从这半年多来面试的经验和一些笔试经验看:这方面的面试题比较多(主要还是比较好出题在这里)这里就不多总结了,奉上自己整理的笔记(略渣的笔记,O(∩_∩)O哈哈~)
      面试常见题
  • 语句

    •   这里就主要看了一下异常机制,没有实战过,处理异常的技术还是不行。自己水平有限,这部分还是得看大佬的总结,也写不出什么比书上更好的东西了,就直接借鉴一下别人的博客吧(懒到一种境界)

  • 总结

    •   上午大体上也就捣鼓了这么点东西,效率还是太低了,得提升提升效率,加油了。

Primer 三四五章的更多相关文章

  1. c++ primer plus 第6版 部分三 9章 - 章

    c++ primer plus 第6版                                               部分三 9章 - 章 第9章   内存模型和名称空间 1.单独编译 ...

  2. C++ Primer 第2章 变量和基本类型

    C++ Primer 第2章 变量和基本类型 C Primer 第2章 变量和基本类型 1 基本内置类型 算数类型 类型转换 字面值常量 2 变量 变量定义 3 复合类型 引用d左引用 指针d 4 c ...

  3. 程序员编程艺术第三十六~三十七章、搜索智能提示suggestion,附近点搜索

    第三十六~三十七章.搜索智能提示suggestion,附近地点搜索 作者:July.致谢:caopengcs.胡果果.时间:二零一三年九月七日. 题记 写博的近三年,整理了太多太多的笔试面试题,如微软 ...

  4. Gradle 1.12用户指南翻译——第三十一章. FindBugs 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  5. Gradle 1.12用户指南翻译——第三十七章. OSGi 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  6. Gradle 1.12用户指南翻译——第三十三章. PMD 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  7. “全栈2019”Java多线程第三十七章:如何让等待的线程无法被中断

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  8. “全栈2019”Java多线程第三十三章:await与signal/signalAll

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  9. “全栈2019”Java多线程第三十一章:中断正在等待显式锁的线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

随机推荐

  1. buffer cache 深度解析

    本文首先详细介绍了oracle中buffer cache的概念以及所包含的内存结构.然后结合各个后台进程(包括DBWRn.CKPT.LGWR等)深入介绍了oracle对于buffer cache的管理 ...

  2. 编码转换(UTF8->GBK)

    WCHAR woutstr[]; ]; , value, -, NULL, ); MultiByteToWideChar(CP_UTF8, , value, -, woutstr, len); len ...

  3. ascii码与二进制码有何区别?

    ascii编码和二进制码是两个概念.ASCII主要是为了电脑显示和传输拉丁字母而发明的一套编码,二进制则是为了计算机方便计算.传输数据而使用的一种方法.ASCII(American Standard ...

  4. vue+uwsgi+nginx部署项目

    首先先下载好前后端项目 先从前端vue搞起 要在服务器上,编译打包vue项目,必须得有node环境 下载node二进制包,此包已经包含node,不需要再编译 wget https://nodejs.o ...

  5. [转] C#2010 在TreeView控件下显示路径下所有文件和文件夹

    原文 张丹-小桥流水,C#2010 在TreeView控件下显示路径下所有文件和文件夹 C#2010学习过程中有所收获,便总结下来,希望能给和我一样在学习遇到困难的同学提供参考. 本文主要介绍两个自定 ...

  6. ffmpeg源码分析二:main函数和transcode函数 (转2)

    原帖地址:http://blog.csdn.net/austinblog/article/details/24804455 首先从main函数看起,关键解释部分已加注释,该函数在ffmpeg.c文件中 ...

  7. Balls(poj 3783)

    The classic Two Glass Balls brain-teaser is often posed as: “Given two identical glass spheres, you ...

  8. 一致性哈希算法(consistent hashing)(转载)

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179     一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...

  9. linux服务器中Apache隐藏index.php失败

    可以通过URL重写隐藏应用的入口文件index.php,下面是相关服务器的配置参考: [Apache] httpd.conf配置文件中加载了mod_rewrite.so模块 AllowOverride ...

  10. java算法 第七届 蓝桥杯B组(题+答案) 10.压缩变换

    10.压缩变换  (程序设计) 小明最近在研究压缩算法.他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比.然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这些 ...