【STL】array简介

一、简介

    array :固定大小的数组。元素在内存中,以严格的线性序列进行排列。跟其他标准容器不同,数组大小固定,不能自己对内存进行动态管理。所以,不能动态的增加或者删减元素个数。

value_type arr[N]//value_type为定义类型;N为元素的个数,可以是0
array<value_type, N> arr_1;

二、容器特征

    1.顺序容器

    array是一个顺序容器,支持下标操作符,同样支持使用迭代器。

    2.连续内存空间

    数组中所有的元素都被存储在连续的内存空间上,允许指针在内容空间上进行随机访问。

    3.固定大小

    容器使用隐式构造函数和析构函数静态分配所需的空间。 在编译时,其size为一个常量。 并且没有内存或时间开销。

三、 类型    

member typedefinitionnotes
value_typeThe first template parameter (T) 
referencevalue_type& 
const_referenceconst value_type& 
pointervalue_type* 
const_pointerconst value_type* 
iteratorrandom access iterator to value_typeconvertible to const_iterator
const_iteratorrandom access iterator to const value_type 
reverse_iteratorreverse_iterator<iterator> 
const_reverse_iteratorreverse_iterator<const_iterator> 
size_typesize_tunsigned integral type
difference_typeptrdiff_tsigned integral type

四、功能函数

    1.Iterators    

返回一个指向“反向”起始位置的const_iterator (public member function )

    2. 容量  

    3.元素存储

    4.修改器

五、实例

#include <iostream>
#include <array>

using namespace std;

void print(const array<int,10>& arr)
{
	for (auto& r : arr)
		cout << r << ends;
}

void main()
{
	array<int ,10> arr_1;
	int arr_2[10] = { 1,2,3,4,5,6,7,8,9,0 };  //array<int ,10> arr_1 与 int arr_2[10] 进行相互操作
	array<int, 10> arr_3 = {9,8,7,6,5,4,3,2,1,0 };

	array<int, 10> arr_4 = { 1,3,5,7,9 };

	arr_1.swap(arr_3);  
/*
	array<int, 10>::iterator arr_iter;

	for (arr_iter = arr_1.begin(); arr_iter != arr_1.end(); arr_iter++)
	{
		cout << *arr_iter << ends;
	}
*/

	print(arr_1);
	cout << endl;
//	print(arr_2); //错误  int[10]类型不能转换到std::array<int,10U>的适当构造函数

	print(arr_3); //交换后  arr_3已经为空数组。打印出来的结果为非正常值
	cout << endl;

	cout << "交换后arr_1的首个元素:" << *arr_1.begin() << endl;
	cout << "交换后arr_1的末尾元素:" << *(arr_1.end() - 1) << endl;  //注意:end()指向的为结束字符,所以要访问末尾元素则需要向前移动一位

	cout << "交换后arr_1的“反向”首个元素:" << *arr_1.rbegin() << endl;
	cout << "交换后arr_1的“反向”末尾元素:" << *(arr_1.rend() - 1) << endl;  //与end()是同样的道理

	cout << "arr_1的size:" << arr_1.size() << endl;
	cout << "arr_3的size:" << arr_3.size() << endl;
	cout << "arr_4的size:" << arr_4.size() << endl;

	cout << "arr_1的max_size:" << arr_1.max_size() << endl;
	cout << "arr_3的max_size:" << arr_3.max_size() << endl;
	cout << "arr_4的max_size:" << arr_4.max_size() << endl;
	//通过这个例子可以看出来   size  和  maxsize 的结果是相同的;

	cout << "at(4) : " << arr_1.at(4) << endl;  //访问下标为i的元素

	cout << "front : " << arr_1.front() << endl;  //访问第一个元素
	cout << "back : " << arr_1.back() << endl;  //访问最后一个元素

}




    


展开阅读全文

没有更多推荐了,返回首页