chapter 3 字符串,向量,数组

# 命名空间的using声明

头文件不应包含using声明;

注:using namespace std;

#标准库类型string

1.string 表示可变长的字符序列;

2.#include<string>

3.字符串字面量 与 string 是不同类型;

4.cctype头文件种定义了一组标准库函数(改变某个字符的特性). 书本P82;

5.范围for循环:

for (auto c:str)  cout<< c <<endl;  

要改变值,必须使用引用类型.eg.  auto &c : str;

6.str[]:下标可以随机访问,但注意要防止越界;

#标准库类型vector

1.#include<vector>

2.vector是模板而非类型.生成类型必须包含vector元素的类型.eg: vector<int> vi;

3.最常见的方式是先定义一个空vector,然后当运行时获取到元素的值后再逐一添加;

vector<int> vi ;
for(int i=0;i<10;++i)  vi.push_back(i);  

在for语句体内不应改变其所遍历的序列的大小;

4.不能用下标形式添加元素:

下标运行符可用于访问已存在的元素,而不能用于添加元素;

确保下标合法的一种有效手段就是尽可能使用范围for语句;

#迭代器iterator

1.begin成员负责返回指向第一个元素(或者第一个字节)的迭代器.end成员则负责返回指向容器(或string对象)的"尾元素的下一位置"(尾后迭代器);

若容器为空,begin与end返回同一个迭代器,都是尾后迭代器;

2.*iterator:返回迭代器所指向元素的引用;  ++iterator等等

3.所有标准库容器都定义了==和!=,大多数没有定义<运算符,所以要养成使用迭代器!=的习惯

4.迭代器这个名词有三种不同的含义:

(1)迭代器概念本身;(2)容器定义的迭代器类型;(3)某个迭代器对象;

5.使用迭代器的循环体,都不要向迭代器所属的容器添加元素;

6.使用迭代器运算:一个经典算法(二分搜素),有序序列查找某个给定的值;

//txt必须有序;
auto b = txt.begin(), e = txt.end();
auto mid = b+ (e-b)/2;
while(mid!=e && *mid!=value){  if(value< *mid)  e = mid;  else  b = mid +1;  mid = b+(e-b)/2;//新的中间点
}  

#数组

1.数组的大小是确定不变的;维度必须是一个常量表达式;如果不清楚元素的确切个数,使用vector;

2.定义数组必须指定数组的类型;

3数组的元素为对象,因此不存在引用的数组;

4.不允许数组之间拷贝与赋值操作,eg:a2 = a;//错误!

5.理解复杂的数组声明:

int *(&arry)[10] = ptrs;//arry是一个数组的引用,该数组含有10个指针;

按照由内而外的顺序阅读:首先arry是一个引用,然后由右边知道,arry引用的对象是一个大小为10的数组.最后观察左边知道,数组的元素类型是指向int的指针;

6.指针与数组:

标准库函数begin和end

int *beg = begin(array);//array数组名;

int *last = end(array) ;  //尾指针不能执行解操作和递增操作;

7.使用数组初始化vector对象

int int_arr[] = {0,1,2,3,4,5};
vector<int> ivec(begin(int_arr),end(int_arr));  

8.多维数组

在使用范围for循环处理多维数组,除了最内层的循环外,其他所有循环的控制变量都应该是引用类型;

tobecontinued

转载于:https://www.cnblogs.com/chenjz1993/p/6749077.html

C++ primer 第三章笔记相关推荐

  1. 软考中级-网络工程师第三章笔记(广域通信网)

    软考中级-网络工程师第三章笔记(广域通信网) 文章目录 软考中级-网络工程师第三章笔记(广域通信网) 前言 一.广域网概念和分类 二.公共交换电话网PSTN 三.公共数据网X.25 四.帧中继网FR ...

  2. 视觉SLAM十四讲-第三章笔记

    视觉SLAM14讲-第三章笔记 3.1 旋转矩阵 欧式变换 欧式变换:改变位资,不改变形状.大小. 旋转矩阵:R(3x3).是两个坐标系基的内积. 正交阵 行列式为1 逆表示相反的旋转 平移向量:t( ...

  3. Unix网络编程卷一第三章笔记

    前言 这篇文章主要是Unix网络编程卷一第三章的个人笔记 1.POSIX 规范的三个字段 sin_family sin_addr sin_port 2.IPV4 套接字结构 五个套接字结构 IPV4( ...

  4. 软件项目管理第三章笔记---项目范围管理

    以下图片及内容整理自西安交通大学软件学院宋永红老师的ppt(课堂回放)中,仅供学习使用,请勿转载或他用 笔记汇总:软件项目管理笔记汇总_Qlz的博客-CSDN博客 第三章 项目范围管理 项目范围与项目 ...

  5. win32汇编琢石成器第三章笔记

    这章主要还是讲一些masm这个编译器所适用的一些语法,和win32汇编语法 目录) 第三章 完整的程序结构 3.1.1 3.1.2段 3.1.4注释和换行 3.2.2调用函数 3.2.3API中的等值 ...

  6. 大学物理第三章笔记——高等农林院校基础课程教程系列

    第三章 热物理学 文章目录 第三章 热物理学 第一节 热力学第一定律 (一)热力学系统与外界 (二)状态参量与平衡态 (三)准静态过程与非准静态过程 (四)热力学第一定律 第二节 热力学第一定律的应用 ...

  7. C++ Primer第三章 心得笔记

    之前的一章我本末倒置了,我看了一个大佬的此书笔记整理得很详细 很得体.我也想按照他的这种方法 在我学习和敲代码的时候进行记录,但是我发现为了记笔记而记笔记 这种方法使我很累.违背了记录分享交流的初衷. ...

  8. 分治习题--九章算法培训课第三章笔记

    1.Maximum Depth of Binary Tree 这是道简单的分治习题了 分: 左子树最大深度 右子树最大深度 治: 最大深度等于max(左子树,右子树)+1 public class S ...

  9. 深入理解计算机系统 第三章笔记,《深入理解计算机系统》笔记.PDF

    <深入理解计算机系统>笔记 <深入理解计算机系统>笔记 目錄 介紹 0 第1章计算机漫游 1 1.1信息就是位+上下文 1.1 1.2程序被其他程序翻译成不同的格式 1.2 1 ...

最新文章

  1. MyEclipse 导出 javadoc 乱码解决
  2. Java 多线程之单例设计模式
  3. java异步处理_SpringBoot异步开发之异步请求,在高并发的情况下,提高性能
  4. 【解析】Alice and Bob_24行代码AC
  5. python requests库api_Python+requests库发送接口入参为xml格式的接口请求
  6. 后端技术:Maven 最全知识总结,值得收藏!
  7. php 获取header auth,php CURL Auth请求头和响应头获取
  8. 计算机c盘容易满怎么办,C盘快满了怎么办 如何清理C盘垃圾?
  9. LINUX打包并下载到本地
  10. 年龄的计算方式计算机函数,excel使用时间函数计算年龄 使用Excel函数计算年龄的三种方法...
  11. C++函数CreateProcess隐藏窗口
  12. DoS攻击之Syn洪泛攻击原理及防御
  13. 面试时你需要问HR什么问题?
  14. 【PyTorch】深度学习实战之PyTorch实现线性回归
  15. (黑)群晖系统 ds photo 相机自动备份 无法识别DICM下的Camera解决方案
  16. SATA协议14种FIS介绍
  17. html5 tbody,tbody
  18. 状压dp、数位dp、概率dp
  19. 开源的云计算开发包:Apache jclouds 1.8.0发布
  20. WICC2021召开在即 商汤科技将展示AI“新能源”

热门文章

  1. Ext fucionchart插件
  2. 一项横断面人群研究中比较放射学阴性的中轴脊柱关节炎患者与强制性脊柱炎患者之间的差别...
  3. [WebDev]Web 开发与设计师速查手册大全
  4. 如何在python开发的GUI界面程序中恰当地使用PyExecJS
  5. shell脚本api接口考虑并发问题的可行性操作
  6. 东野圭吾最值得看的书排行榜_东野圭吾最值得看的7本作品,我进了坑就再也没出来...
  7. c语言写输入汉字输出区位码程序,2017年计算机应用基础检测试题
  8. oracle schedule stop,Oracle调度Schedule特性(第八部分)-Windows和Window Groups
  9. EOS Chain/Wallet RPC API的PHP开发包
  10. String、StringBuffer、StringBuilder的理解