C++ primer[查漏补缺] 第三章

第三章

1

using namespace::name使用命名空间的名字。
例如:using std:cin
每个名字都需要独立的using声明。

头文件不应该使用using,否则所有引用头文件的文件都会有这个声明。

2

的初始化:
=是拷贝初始化
()是直接初始化

3

String的操作有getline(is,s):读取一行,但不包括换行符。
string str='b'+'c'+s1是不合法的,不能将字面值直接相加。
string str=s1+'b'+'c'是合法的。

4

如果要对字符修改:

for(auto &c:s){
	c = toupper(c);
}
cout<<s<<endl;
5

String的下标是string::size_type的,如果传进来的是带符号则会自动转换。

6

在这里插入图片描述

7

vector是类模板;
在这里插入图片描述
类型不一样,无法进行列表初始化的时候会当做默认值初始化:例如元素个数 { n } \{n\} {n},和 { n , v a l } \{n,val\} {n,val}

8

在这里插入图片描述

9在这里插入图片描述

在这里插入图片描述
beginend返回迭代器的类型与元素类型一致。
cbegincend则都是cosnt_iterator

10

i t − > m e n it->men it>men等价于 ( ∗ i t ) . m e n (*it).men (it).men
任何一种可能改变 v e c t o r vector vector容量的操作,都会使得其迭代器失效。
在这里插入图片描述
两个迭代器之间的距离的类型是 d i f f e r e n c e _ t y p e difference\_type difference_type的带符号整型数。

11

数组声明的时候必须是常量表达式为初始值的常量(即编译就能得到结果)。
在这里插入图片描述

12

字符数组的初始化:
在这里插入图片描述

13

复杂数组的声明
在这里插入图片描述在这里插入图片描述
数组声明从内到外读。

14

使用数组下标的时候,通常定义为 s i z e _ t size\_t size_t类型
对于 A A A是数组: d e c l t y p e ( A ) decltype(A) decltype(A)仍是数组, a t u o B ( A ) atuo B(A) atuoB(A)则是指针
获取数组的起始指针和尾后指针:
int *beg=begin(A);int *last=end(A);
int *end=&A[sz]是合法的但是危险的,但是&A[sz+100]显然不合法的
两个指针相减的结果为:`ptrdiff_t
在这里插入图片描述

15

C C C风格字符串必须以空字符结尾。
strlen会不断寻找。

strcpystrcat需要保证空间够,这就是代码充满风险的原因。

16

C风格字符串到string
在这里插入图片描述
反过来:
在这里插入图片描述
数组初始化vector
在这里插入图片描述

17

利用范围for处理多维数组

for(auto &row : ia){
	for(auto &col : row){
		col = cnt++;
	}
}

第一层是引用的原因是 row是数组,所以可能会被转换成指针,而如果是指针的话第二次for就不合法了,所以无论第二次是否修改,第一层都应该是引用。

18

对于 i a [ 3 ] [ 4 ] ia[3][4] ia[3][4],对其进行遍历:
在这里插入图片描述
在这里插入图片描述
或者:
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值