• 序言

    • 看了看表,再看了看书,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. ESXI root密码忘记,重置root密码

    今天遇到了一个叫人比较头疼的问题,早在一个月前公司拉来一台服务器,闲着没事我给装成了Esxi的虚拟机系统了,时间过久忘了当时设定的密码为何?故而翻了许久的资料,终于找好的方向,准备重置系统密码.准备搞 ...

  2. (转)Docker volume plugin - enabled create local volume on docker host

    原文地址:https://hub.docker.com/r/cwspear/docker-local-persist-volume-plugin/ Short Description Create n ...

  3. Python web框架 Tornado(一)基础学习

    概述 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了 ...

  4. Chrome Postman及Firefox Poster使用

    Chrome浏览器跟Postman工具共用代理设置及Cookie Firefox浏览器跟Poster工具共用代理设置及Cookie   xdebug调试原理 第一次请求url通过参数XDEBUG_SE ...

  5. 嵌入式app框架

    推荐两个html5在手机app开发方面好的框架:phonegap + sencha. sencha touch是一个html5的重型框架,自带组件较多,一般应用可以凑合着使. phonegap可以将h ...

  6. U盘启动安装WIN7(包含资源的地址)

    这几天在装win7和linux双系统,整理一下 第一种是在正常的windows下,网上下了镜像之后,装虚拟光驱,然后双击安装,按步骤执行即可,这个没什么好讲的. 第二种是windows坏掉,或者木有系 ...

  7. 关于 warning CS0659:“***”重写Object.Equals(object o)但不重写Object.GetHashCode()

    对象相等性和同一性 System.Object 类型提供了以下方法, namespace System { // // 摘要: // 支持 .NET Framework 类层次结构中的所有类,并为派生 ...

  8. Squid 反向代理服务器配置

    简介: Squid 反向代理常用于服务器端,客户端访问 Squid 代理服务器的 80 端口,Squid 代理服务器根据配置去请求后端的 web 服务器, 然后将请求到的信息保存在本地并回传给客户端, ...

  9. 【298】◀▶ IDL 系统过程&函数

    参考: Programming and Control 序号 类名称   功能说明   语法 & 举例 01 DEFSYSV   ====<<<< Descriptio ...

  10. PHP - 用户异常断开连接,脚本强制继续执行,异常退出回调

    试想如下情况.如果你的用户正在执行一个需要非常长的执行时间的操作.他点了执行了之后,浏览器就开始蛋疼地转.如果执行5分钟,你猜他会干啥,显然会觉得什么狗屎垃圾站,这么久都不响应,然后就给关了.当然这个 ...