C++primer第九章、数组和容器、指针和迭代器

一、数组和容器

数组和指针要比容器和迭代器低级,现代c++程序应尽量使用vector和iterator,而避免使用低级的数组和指针。好的程序只有在强调速度时采用数组和指针。数组被严格限制在程序内部使用,只有当性能测试表明容器无法达到必要的速度要求时,才使用数组。

A、数组

1、数组定义

数组维数必须用常量表达式定义,非const变量和直到运行阶段才知道大小的const变量都不能用作数组维数。

2、数组初始化

在函数体外定义的内置数组,其元素均初始化为0;在函数体内,则元素无初始化。对于非内置数组,即类数组,自动调用默认的构造函数进行初始化,如果没有默认的构造函数,则必须显示初始化。

如果指定了数组维数,那么初始化列表的元素个数不能超过数组维数。当列表数据较少时,剩下的元素,若是内置数组,则初始化为0,否则用构造函数初始化。

3、数组下标

从0开始,,数组长度类型是size_t类型

注意:

c++标准功能里面,数组是不能直接赋值和复制的,即不能用一个数组初始化另一个数组,也不能将一个数组赋值给另一个数组。尽管有的编译器是可以进行数组赋值的,但是这依赖于编译器,最好不要使用。

B、容器和数组的区别

数组与容器相比有着如下缺点:数组长度固定,容器长度可以动态增加,而且数组不提供获取其容量大小的size操作,也不提供push_back操作,因此程序员无法动态的获取数组的长度,如果要改变长度,也只能创建一个新的数组,并且内置数组的使用更加容易出错且难以调试。

二、指针和迭代器

1、指针定义

string* ps1,ps2;//仅ps1是指针,ps2是一个string类型的数据

string* ps1, *ps2;//都是指针

string *ps1,*ps2;

因此定义指针时,*的位置不重要,必须一个数据与一个*紧邻

2、指针初始化

指针可以用来保存特定对象的地址,指向某个对象后面的另一个对象,或者0,代表不指向任何对象。

3、指针和引用区别

引用前必须进行初始化;给引用赋值修改的是该引用所关联的对象的值,而指针只是修改的一种关系。

4、指针是一个左结合的操作符

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值