c++ STL 之 array

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013919153/article/details/82414957

#define VNAME(value) {cout<<(#value)<<":"<<endl;}

template<class T>
void print_elemnt(T &v)
{
	for(auto i : v)
		cout<<i<<" ";
	cout<<endl;
}

/*
 *template < class T, size_t N > class array;
 *静态数据,只不过封装了一些方法,可以有效预防越界等问题
 */
void test_array(){
	array<int,5> ar = {1,2,3};		//使用initializer_list<value_type>初始化
	array<int,10> ab;
	array<int,5> arr;
	array<char,20> astr;

	astr.fill(0);
	const char* pStr = "Testing string";
	//astr = pStr;		//不能这么操作,错误
	std::memcpy(astr.data(),pStr,strlen(pStr));		//将字串拷贝到数组对象
	VNAME(astr)
	cout<<astr.data()<<endl;	//两种显示方法
	print_elemnt(astr);

	ab.fill(9);		//数组初始化.最好初始化,无论使用列表初始化还是调用函数
	arr.fill(0);

	cout<<" size of ar:"<<ar.size()<<endl;
	cout<<" max_size of ar:"<<ar.max_size()<<endl;

	cout<<" first element is :"<<ar[0]<<endl;
	cout<<" first element is :"<<ar.at(0)<<endl;
	cout<<" first element is :"<<ar.front()<<endl;
	cout<<" last element is :"<<ar.back()<<endl;

	const int *p = ar.data();		//获取第一个元素的指针,通过操作指针还操作数组
	cout<<" by data method:"<<p<<endl;
	cout<<ar.data()<<endl;
	cout<<" third element is :"<<*(p+2)<<endl;

	if (ar.empty())
	{
		cout<<"ar is empty"<<endl;
	}

	//比较操作符<,>,<=,>=,==,!=
	if (ar > arr)
	{
		cout<<" arr is greater than arr"<<endl;
	}
	if (ar != arr)
	{
		cout<<" arr is not equal to ar"<<endl;
	}

	ar.swap(arr);	//交换内容
	VNAME(ar)
	print_elemnt(ar);
	VNAME(arr)
	print_elemnt(arr);


	cout<<endl<<endl;
}

猜你喜欢

转载自blog.csdn.net/u013919153/article/details/82414957
今日推荐