C++primer 第五版 *笔记二 [渣渣进化记]

【第三章】字符串、向量、数组

1、标准库类型string

初始化:(两种之前不熟悉的方式)  直接初始化。拷贝初始化是使用 =

string s1("value") ;  
string s2(n, 'c');

string 的操作

getline(is, s)  //从is中读取一行给s
s.empty()    //s为空返回true
s.size()    //返回s中字符的个数

·读取string对象 从第一个真正的字符读取,遇到空白就停止

·string 的size操作   size()函数 返回的类型是string::size_type,是无符号整型数,所以表达式中有了size()函数就不要用int了,避免混用int和unsigned可能带来的问题

·字面值和string对象相加,+两侧至少一个是string

string s4 = s1 + ", "; //正确
string s5 = "hello" + ", ";//错
string s6 = s1 + ", " + "wold";//正确
string s7 = "hello" + ", " + s2;//错误

(注意运算的顺序)

二、vector

初始化vector<int>时 圆括号 和 花括号

vector<int> v1(10);// v1有10个元素,值为0
vector<int> v2{10};//v2有1个元素,值为10

初始化vector<string>时

vector<string> v3{10};//v3有10个默认初始化元素
vector<string> v4{10, "hi"};//v4有10个值为hi的元素

·向vector对象中添加元素

先创建一个空的vector在利用vector的成员函数push_back()添加元素
vector的下标运算符可访问已经存在的元素,但不能用于添加元素

三、迭代器

·迭代器成员:如果容器为空,begin 和 end返回同一个迭代器

begin()   返回指向第一个元素

end()    尾元素下一个位置(不能对end进行递增和递减,因为不实际指向某个元素)

·迭代器类型:

iterator    读写

const_iterator  只读

begin 和 end 返回的类型由对象是否是常量决定

新标准引入两个新函数,为便于专门得到const_iterator类型的返回值: cbegin  和 cend

·两个迭代器指向的是同一容器的元素或者尾元素的下一位置,则相减后的其距离,类型名为difference_type

四、数组

·字符串数组,注意结尾有1个位置存放空字符串,显示空字符串为 \0

·理解复杂数组从内往外

·使用数组下标时,定义为size_t类型

·两个指针相减结果也是其距离,结果类型为 ptrdiff_t

(数组这坨还算比较清楚一点,跳的就比较快了,真心感觉看不完呢…难过…加速加速!刚看了下目录,到八章开始对我来说都是些全新的东西,那坨才该是细看的,还剩4章火速看了!!)


【第四章】表达式

·使用++i  --i 而不用 i++ i--的原因 :

前置版本把值加1后直接返回改变了的运算对象

后置版本需要将原始值存储下来以便于返回这个未修改的内容

·显式转换 命名的去强制类型转换

cast-name<type>(expression)

type:转换目标的类型

expression:要转换的值

cast-name:

·static_cast:任何有明确定义的类型转换,只要不包含底层const,都可以用

                      对编译器无法自动执行的类型转换也非常有用,如void*指针

·dynamic_cast:支持运行时类型识别

·const_cast:只能改变底层const,可将常量对象转换为非常量(去掉const性质

                      若对象本身不是常量,则强制类型转换获得写权限 合法

                      若对象是常量,则用const_cast 执行写操作会产生未定义后果

·reinterpret_cast:使用很危险……



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值