C++ array、pointer VS vector、iterator

C++提供了两种类似于vector与iterator的低级复合类型——数组和指针。array~~vector 而 iterator~~pointer。主要的区别在于:数组的长度是固定的,一经创建那么就不允许添加新的元素。指针可以像iterator一样用于遍历和检查数组中的元素。

高级提醒:现在C++编程中,尽量使用Vector和iterator类型,少使用array与pointer类型。但是,使用array有一个好处,就是可以提高性能,在这种情下,使用vector无法达到性能要求时,才可以使用array。

1. 对于数组维数中的值,我们只能够使用常量,或者初始化的const类型的对象。而非const变量以及要到运行阶段才能知道其值的const变量都不能用于定义。

 

2. 字符数组:char ca1[] = {'C', '+', '+'};   // no null;3

                        char ca2[] = "C++";             //null terminator added automatically.4

3. 不允许直接给数组进行复制和复制。

                         fg:int ia[]={0,1,2};

                                 int ia2[](ia);   // error;

                                 int ia3[3];

                                 ia3=ia;   //error;

4. 数组的下标类型可以用size_t来表示。vector的下标使用的是size_type类型。

指针

指针是用于指向对象的。

fg:string* fp; fp定义为了一个指向string类型的指针对象。

提示:识别时我们可以从右往左去识别定义的指针变量。

对于指针星号的位置,可以挨着类型名也可以挨着变量名。两种风格,使用哪个都可以,只要延续使用一种就可以了。

高级提示:如果可以不定义指针的话,就先别定义,等到对象已经存在的时候再定义指针,这样可以避免未初始化的错误。另外,就是如果必须定义时,就把指针初始化为null。此时程序是能够判断该指针并为指向一个对象。

 

给指针赋值的情况:

1)0值常量可以;2)类型匹配的对象地址可以;3)对象下一地址可以;4)另一个指针可以;

运行把数值0 或在编译时可以获得0的const值赋给指针。

 

void*实际上就是一种黄金,通用的,到哪里都可以使用的。可以保存任何一种类型的指针。

 

重点:

指针和引用的区别:

1)引用定义必须初始化,因为它是指向一个对象的。

2)给引用赋值就是给引用所关联的对象赋值。

二级指针。指向指针的指针。二级地址。;;;;;;;;;;;;;;;;;;;;;;;

数组的输出:

也可以给数组设置一个哨兵:

int  int_arr[] = {0,1,2,3,4};

for(int* pbegin = int_arr,*pend = int_arr + 5; pbegin != pend; pbegin ++)

{

     cout << *pbegin << ' ';

}

同理:指针就是数组的迭代器;

for(vector<int>::iterator iter = ivec.begin();iter!=ivec.end();iter++)

{

    *iter = 0;

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值