当前位置: 首页 > 编程日记 > 正文

C++ primer 第三章笔记

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

相关文章:

街篮最新服务器,《街篮》全新两组服务器开启 与你一起迎新年!

2016还剩下几个小时&#xff0c;2017即将到来。为了庆祝新的一年到来&#xff0c;《街篮》两组全新的服务器“闻鸡起舞”与“金鸡独立”正式与大家见面&#xff01;本次新服务器将在官服和混服同时开启&#xff0c;其中“闻鸡起舞”属于G系的新服务器&#xff0c;而“金鸡独立”…

Android架构篇-4 架构模式MVVM

Android架构篇-4 架构模式MVVM MVVM原理 #mermaid-svg-CJmTYPxP5GkKNMic .label{font-family:trebuchet ms, verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-CJmTYPxP5GkKNMic .label text{fill:#333}#mermaid-svg-CJmTYPxP5GkKNM…

jupyter安装与初探

安装jupyter jupyterlab和jupyter notebook的关系暂时没有搞清楚。先都安装了吧&#xff0c;用用再说。 选择国内镜像&#xff0c;避免万里长城的干扰。 pip install jupyterlab -i http://uni.mirrors.163.com --trust-host uni.mirrors.163.com pip install jupyter noteb…

android专题-数据库Room

android专题-数据库Room Room介绍 room是Google官方推荐的ORM数据库框架&#xff0c;抽象出sqlite访问的数据库。 包含三大组件&#xff1a; Entity 定义 表结构&#xff0c;每个entity类对一个表&#xff0c;默认会把entity类所有字段都创建为表字段Dao 定义entity类的CRUD…

CentOS 6.7快速搭建lamp环境

安装前要关闭防火墙&#xff0c;防止外网不能访问&#xff0c;这一点很重要&#xff0c;要不然外网访问不了&#xff1b; ①关闭防火墙&#xff1a;service iptables stop ②永久关闭防火墙&#xff1a;chkconfig iptables off ③查看防火墙状态&#xff1a;service iptables …

1005 生日礼物

1005 生日礼物 时间限制: 1 s空间限制: 128000 KB题目等级 : 黄金 Gold题解题目描述 Description9月12日是小松的朋友小寒的生日。小松知道小寒特别喜欢蝴蝶&#xff0c;所以决定折蝴蝶作为给小寒的生日礼物。他来到了PK大学最大的一家地下超市&#xff0c;在超市里&#xff0c…

css多行省略号兼容ie,css超出2行部分省略号……,兼容ie

html>Page Title.wrap {height: 40px;line-height: 20px;overflow: hidden;}.wrap .text {float: right;margin-left: -5px;width: 100%;word-break: break-all;}.wrap::before {float: left;width: 5px;content: ‘‘;height: 40px;}.text {position: relative;line-height…

机器学习01-定义、线性回归、梯度下降

目录 一、定义 What is Machine Learning 二、建模 Model Representation 三、一元线性回归 Linear Regression with One Variable 3.1 一元线性归回的符号约定 Notation 3.2 一元线性回归 Linear Regression with One Variable 3.3 代价函数 Cost Function 3.4 梯度下降…

android专题-蓝牙扫描、连接、读写

android专题-蓝牙扫描、连接、读写 概念 外围设备 可以被其他蓝牙设备连接的外部蓝牙设备&#xff0c;不断广播自身的蓝牙名及其数据&#xff0c;如小米手环、共享单车、蓝牙体重秤 中央设备 可以搜索并连接周边的外围设备&#xff0c;并与之进行数据读写通讯&#xff0c;…

2 并发编程--开启进程的两种方式

multiprocessing 英 /mʌltɪprəʊsesɪŋ/ n. [计][通信] 多重处理 1、multiprocessing 模块介绍 python中的多线程无法利用多核优势&#xff0c;如果想要充分地使用多核CPU的资源&#xff08;os.cpu\_count\(\)查看&#xff09;&#xff0c;在python中大部分情况需要使用多…

POJ 2112 Optimal Milking(二分+最大流)

POJ 2112 Optimal Milking 题目链接 题意&#xff1a;给定一些机器和奶牛&#xff0c;在给定距离矩阵&#xff0c;&#xff08;不在对角线上为0的值代表不可达&#xff09;&#xff0c;每一个机器能容纳m个奶牛。问全部奶牛都能挤上奶&#xff0c;那么走的距离最大的奶牛的最小…

ajax的loading方法,Ajax加载中显示loading的方法

使用ajaxStart方法定义一个全局的“加载中。。。”提示$(function(){$("#loading").ajaxStart(function(){$(this).html.("");});$("#loading").ajaxSuccess(function(){$(this).html.("");// $(this).empty(); // 或者直接清除});});…

机器学习02-分类、逻辑回归

目录 一、分类问题 Classification 二、分类问题的估值 Hypothesis Representation 三、分类问题的决策边界 Decision Boundary 四、分类问题的代价函数 Cost Function 五、简化的代价函数与梯度下降Simplified Cost Function & Gradient Descent 5.1 简化代价函数 …

python绘制盖尔圆并做特征值的隔离

本程序并非智能到直接运行隔离出所有特征值&#xff0c;而是需要高抬贵手&#xff0c;手动调节变换矩阵D的参数&#xff0c;以实现特征值的隔离。若期待直接找到能特征值隔离的D矩阵参数变化范围&#xff0c;怕足下要失望了&#xff0c;鄙人暂没有做到那一步&#xff0c;一是因…

mysql 电商项目(一)

mysql 电商项目 - MySQL数据库开发规范 1、数据库基本设计规范  2、索引设计规范 3、数据库字段设计规范 4、数据库SQL开发规范 5、数据库操作行为规范 转载于:https://www.cnblogs.com/Eric15/articles/9719814.html

Android专题-常用第三方框架

Android专题-常用第三方框架 HTTP网络请求 带*号的是个人推荐比较好用的 HTTP网络请求 okhttp * :https://github.com/square/okhttp retrofit:https://github.com/square/retrofit Volley:https://github.com/google/volley Android Async HTTP:https://github.com/andr…

WPF显示经常使用的几个显示文字控件TextBox, TextBlock, Lable

WPF显示经常使用的几个显示文字控件TextBox&#xff0c; TextBlock&#xff0c; Lable TextBox&#xff0c; TextBlock。 Lable 当中TextBox 和Lable均继承了Control类 能够对其进行模板编辑。而TextBlock没有继承Control所以不能对其进行模板编辑 我的程序中须要做一个二级菜单…

机器学习03-神经网络

目录 一、非线性估值Non-Linear Hypothesis 二、神经网络建模 Neural Network 三、复习逻辑回归问题矩阵式 3.1 没有进行正则化 3.2 进行正则化 四、神经网络的代价函数 4.1 符号约定Notation 4.2 代价函数 五、反向传播算法 Backpropagation Alg 5.1 任务 5.2 一个…

python 打包

一、下载 pip install Pyinstaller 二、使用Pyinstaller 1、使用下载安装的方式安装的Pyinstaller打包方式 将需要打包的文件放在解压得到的Pyinstaller文件夹中&#xff0c;打开cmd窗口&#xff0c;把路径切换到当前路径打开命令提示行&#xff0c;输入以下内容&#xff08;最…

iOS架构篇-3 网络接口封装

iOS架构篇-3 网络接口封装 关键字:iOS,网络接口封装,Alamofire,swift 网络接口API通常都需要自己封装一套管理,这里以swift版的Alamofire为例. 实现功能: 1.暴露参数请求地址url、请求方法method、请求参数params、请求头header、请求响应response(响应数据、响应头resp…

coursera 《现代操作系统》 -- 第十一周 IO系统

本周要求 错题 下列I/O控制方式中&#xff0c;哪一个不需要硬件支持&#xff1f; 中断方式 轮询方式 DMA方式 I/O处理机方式 中断方式&#xff1a;中断控制器 轮询方式&#xff1a;CPU不断查询设备以了解其是否就绪 DMA:使用到了 DMA 控制器 4。 在设备管理中&#xff0c;缓冲…

matlab图形绘制基础(东北大学MOOC笔记)

%% 二维图形绘制 % 多纵轴曲线绘制 figure(1); t 0:0.01:2*pi; y1 sin(t); y2 10*cos(t); % plotyy(t, y1, t, y2); yyaxis left plot(t, y1); ylim([min(y1), max(y1)]); yyaxis right plot(t, y2); ylim([min(y2), max(y2)]);% 绘制极坐标图 figure(2); theta 0 : 0.01 :…

【转载】pycharm远程调试配置

pycharm远程调试配置https://www.cnblogs.com/liangjiongyao/p/8794324.html

Tornado 类与类组合降低耦合

转载于:https://www.cnblogs.com/shiluoliming/p/6760548.html

matlab生成多组多维高斯分布数据

matlab生成多组多维高斯分布数据 之所以写这么一个函数&#xff0c;是因为在练习用matlab实现聚类分析&#xff0c;用matlab生成的高斯分布数据可以作为很好的数据。当然&#xff0c;直接load进鸢尾花数据集也可以拿来练手&#xff0c;到后边再对鸢尾花数据集进行分析。 代码…

Android架构篇-5 CI/CD(持续集成、持续交付、持续部署)

Android架构篇-5 CI/CD(持续集成、持续交付、持续部署) CI CI是指持续集成,代码的更新会定期自动构建、测试并合并到公共仓库中,方便多分支时解决冲突问题 CD CD是指持续交付和/或持续部署,开发人员改动代码会自动测试提交到仓库,运维实施人员将其部署到生产环境中,方…

OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式...

OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式 以最简单的4 x 5三通道图像为例&#xff0c;其在内存中Mat类型的数据组织形式如下&#xff1a; 每一行的每一列像素的三个通道数据组成一个一维数组&#xff0c;一行像素组成一个…

CV01-语义分割笔记和两个模型VGG ResNet的笔记

目录 一、语义分割 二、VGG模型 2.1 VGG特征提取部分 2.2 VGG图像分类部分 三、ResNet模型 3.1 为什么是ResNet 3.2 11卷积调整channel维度大小 3.3 ResNet里的BottleNeck 3.4 Global Average Pooling 全局平均池化 3.5 Batch Normalization 学习语义分割理论&#x…

matlab编程实现k_means聚类(k均值聚类)

1. 聚类的定义 以下内容摘抄自周志华《机器学习》 根据训练数据是否拥有标记信息&#xff0c;机器学习任务可以大致分为两大类&#xff1a;“监督学习”&#xff08;supervised learning&#xff09;和“无监督学习”&#xff08;unsupervised learning&#xff09;。分类和回…

一目了然了解JAVA集合体系

在编程中&#xff0c;常常需要集中存放多个数据。从传统意义上讲&#xff0c;数组是我们的一个很好的选择&#xff0c;前提是我们事先已经明确知道我们将要保存的对象的数量。一旦在数组初始化时指定了这个数组长度&#xff0c;这个数组长度就是不可变的&#xff0c;如果我们需…