版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}