• 序言

    • 看了看表,再看了看书,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. free 命令结果完全剖析

    free 命令结果完全剖析 total 总物理内存大小. used 已分配的大小,注意,对操作系统来说任何被使用的内存都是used. free 未被分配的物理内存大小. shared 共享内存大小,主 ...

  2. Nodejs之express第三方核心模块的中间件——body-parser

    Node中的核心模块分两类:一类是自带的核心模块,如http.tcp等,第二类是第三方核心模块,express就是与http对应的第三方核心模块,用于处理http请求.express在3.0版本中自带 ...

  3. MapReduce启动的Map/Reduce子任务简要分析

      对于Hadoop来说,是通过在DataNode中启动Map/Reduce java进程的方式来实现分布式计算处理的,那么就从源码层简要分析一下hadoop中启动Map/Reduce任务的过程.   ...

  4. soap,socket

    Socket 接口是访问 Internet 使用得最广泛的方法. 如果你有一台刚配好TCP/IP协议的主机,其IP地址是202.120.127.201, 此时在另一台主机或同一台主机上执行ftp 20 ...

  5. USB设备---URB请求块

    1.urb 结构体 USB 请求块(USB request block,urb)是USB 设备驱动中用来描述与USB 设备通信所用的基本载体和核心数据结构,非常类似于网络设备驱动中的sk_buff 结 ...

  6. 关于操作 ASP.NET Web API的实例

    WCF的野心造成了它的庞大复杂,HTTP的单纯造就了它的简单优美.为了实现分布式Web应用,我们不得不将两者凑合在一起 —— WCF服务以HTTP绑定宿主于IIS. 于是有了让人晕头转向的配置.让人郁 ...

  7. 12.solr学习速成之dataimport

    solr除了利用solrj建立索引外,还可以由列式数据库hbase触发器添加索引,自动全量或者增量索引关系数据库数据等. dataimport可以配置从任何关系数据库导入索引 1.将jar包拷贝到to ...

  8. PHP编译安装系列

    徐亮伟, 江湖人称标杆徐.多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作.擅长Web集群架构与自动化运维,曾负责国内某大型电商运维工作. 个人博客"徐亮伟架构师之路&quo ...

  9. Proof for Floyd-Warshall's Shortest Path Derivation Algorithm Also Demonstrates the Hierarchical Path Construction Process

    (THIS BLOG WAS ORIGINALLY WRTITTEN IN CHINESE WITH LINK: http://www.cnblogs.com/waytofall/p/3732920. ...

  10. 一个不明觉厉的貌似包含很多linux资料索引的网页

    http://man.lupaworld.com/content/other/Linux/linuxmanage/node108.html 貌似是个官方的doc之类的...