array复习札记1

这几天因为要做一个东西,在使用数组跟指针时出了些问题,于是回过头来再看了下这方面的知识,发现每看一次都会收获不小。

C++语言提供了两种类似于vector和迭代器类型的低级复合类型——数组和指针。与vector类型相似,数组也可以保存某些类型的一组对象;而它们的区别在于,数组的长度是固定的。数组只要一创建,就不允许添加新的元素。指针则可以像迭代器一样用于遍历和检查数组中的元素。

我对于数组和指针不怎么喜欢,感觉没有vector方便,其实现代的C++程序中多数使用vector和迭代器类型,而不怎么使用低级的数组和指针。在设计程序时,只有在强调速度时才在类实现的内部使用数组和指针。

不管喜不喜欢用它们,都要学好它们,因为有些时候它是解决一些问题的关键,正如我现在做的东西,呵呵还是老老实实地把它的用法学好才是硬道理。

显式初始化数组元素

在定义数组时,可为其元素提供一组用逗号分隔的初值,这些初值用花括号{}括起来,称为初始化列表:

const unsigned array_size = 3;
int ia[array_size] = {0,1,2};

 如果没有显式提供元素初值,则数组元素会像普通变量一样初始化:

  • 在函数体外定义的内置数组,其元素均初始化为 0;
  • 在函数体内定义的内置数组,其元素无初始化;
  • 不管数组在哪里定义,如果其元素为类类型,则自动调用该类的默认构造函数进行初始化;如果该类没有默认构造函数,则必须为该数组的元素提供显式初始化。

数组操作

与vector元素一样,数组元素可用下标操作符来访问,数组元素也是从0开始计数。对于一个包含10个元素的数组,正确的下标值是从0到9,而不是从1到10。

在用下标访问元素时,vector使用vector::size_type作为下标的类型,而数组下标的正确类型则是size_t。

我下面写的例子是用for循环遍历数组的10个元素,并以其下标值作为各个元素的初始值:

//数组复习练习
#include<iostream>
using namespace std;

//把数组的下标赋值给数组对应下标的值
int main()
{
	const size_t array_size = 10;    //size_t数组下标类型
	int ia[array_size];              //10 ints,elements are uninitialized

	cout<<"ai的元素:";
        //loop through array,assigning value of its index to each element
	for ( size_t  ix = 0; ix != array_size; ++ix )
	{
		ia[ix]  = ix;
		cout<<ia[ix]<<",";
	}
	cout<<endl;
	return 0;
}

 同样使用以上循环还可以实习把一个数组复制给另一数组:

//数组复习练习
#include<iostream>
using namespace std;

int main()
{
	const size_t array_size = 7;
	int ia1[] = {0,1,2,3,4,5,6};
	int ia2[array_size];                 //local array,elements unintialized
	cout<<"ai2的元素:";
	
	//copy elements from ia1 into ia2
	for(size_t ix = 0; ix != array_size; ++ix)
	{
		ia2[ix] = ia1[ix];
		cout<<ia2[ix]<<",";
	}
	cout<<endl;
	return 0;
}

 

posted @ 2013-03-27 23:03  haihai187  阅读(191)  评论(0编辑  收藏  举报