重读C++Primer 02 字符串、向量和数组

string

字面值和string 对象相加

要保证+前后至少有一个是string对象。因为为了与C兼容,字符串字面值并不是string对象。

头文件

在C++中,使用诸如cname的头文件,而不是使用name.h的文件。

可变性

对于C++中的字符串,是可变的,因此非常舒适。

    string s = "1234567";
    s[0] = '0';

C++中合法。在Java中,这样是不可以的,python也是不可以的。

使用下标执行

string s = "11111";
for(decltype(s.size()) i = 0; i < s.size(); i++) {

}

现在发现这种写法比较骚气,推荐使用,不容易出错。

vector

列表初始化与数组数量

如果是{},那么就是列表初始化

如果是(),那么就是数组数量

泛型编程

for循环

在写for循环的时候,可以考虑判断条件用!=,而不是用<,这是因为,所有标准库容器的迭代器都定义了==!=,但是不一定定义了<,这样的做法使得不需要考虑容器类型。

数组

多维数组的理解

想理解数组声明的含义,自内而外,自右向左

多维数组的声明

其实C++中没有多维数组,多维数组实际上是数组的数组。数组可以不规定长度,但是这时候就可以直接由编译器推导出来。数组必须规定是什么类型。

比如

int a[][3][4] = /***具体内容***/

这是合法的。在标准中规定,除了第一个[]中的数字可以省略,别的都不可以省略。但是省略的情况下应该可以被推导出来。具体为什么我也不知道。

例:

int a[3][4];// ok
int b[][4]; // no! [Error] storage size of 'b' isn't known
int c[][4] = {{1,2,3}, {4,5,6}, {6, 8}};  // ok
int d[3][4] = {{1,2,3}, {4,5,6}, {6, 8}}; // ok
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值