C++笔记 STL容器 --- 定长数组 array容器

c++ 11中提供了数组类Array(容器)该Array的引入引入为C风格的数组提供了更好的选择。array类相对于C风格的数组有以下的优点:

1. 数组类(Array class)知道自己的大小,而C风格的数组缺乏此属性。所以当传递给函数时,我们不需要把数组的大小作为单独的参数传递。
2. 使用C风格的数组,数组退化为指针的风险更大;而数组类不会衰退为指针。
3. Array通常比C风格的数组更有效、更轻、更可靠。

array是什么?  就是一个定长数组  可以把对象当成一个数组名

注意事项:

  • 容器统一不用指针去操作,而是用里面内置的迭代器去操作

  • array数组和一维数组一样使用,只是它是一个模版类(用类描述的数组)

  • data()  返回第一个元素的地址 ,string 里面的 data()  相当于  c_str() 转换成为字符串

1、提供迭代器打印

void printArray(array<int, 3> &Array)
{

	for (array<int, 3>::iterator it = Array.begin(); it != Array.end(); it++)
	{

		cout << *it << "\t";
	}
	cout << endl;
}

2、遍历数组的三种方法

void test01()
{
	array<int, 3> myArray = { 1,2,3 };
	// array<int,3>  *pInt=new  array<int,3>;   语法麻烦,但是不怎么常用

	for (auto v : myArray)
	{

		cout << v << "\t";
	}
	cout << endl;

	for (array<int, 3>::iterator it = myArray.begin(); it != myArray.end(); it++)
	{

		cout << *it << "\t";
	}
	cout << endl;


	for (int i = 0; i < 3; i++)
	{


		cout << myArray[i] << "\t";
	}

	cout << endl;
}

 

 

3、单独访问数组中的元素

/*  判断*/

void arrayFunc()
{
	array<string, 3> strArray = { "julia","andy","lisa" };
	cout << "size=" << strArray.size() << endl;
	cout << strArray.empty() << endl;


	// 1、使用下标法进行访问
	cout << strArray[1] << endl;


	// 2、功能:  front() 返回当前array容器中起始元素的引用
	//            back()  返回当前vector容器中末尾元素的引用。
	cout << strArray.front() << endl;
	cout << strArray.back() << endl;


	// 3、使用迭代器
	cout << *strArray.begin() << endl;
	cout << *(strArray.end()-1) << endl;

	//cout << *(--strArray.end()) << endl;//打印最后一个元素

	// 4、使用at
	cout << strArray.at(1) << endl;


}

  

 

 

4、交换两个容器

//size保持一致
void test02()
{
	array<int, 3> myArray1 = { 1,2,3 };
	array<int, 3> myArray2 = { 10,20,30 };
	cout << "交换前" << endl;
	printArray(myArray1);
	printArray(myArray2);
	myArray1.swap(myArray2);
	cout << "交换后" << endl;
	printArray(myArray1);
	printArray(myArray2);
}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Love coldplay

你的鼓励,将让我持续更新

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值