栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++

目录

一、结构视图

二、代码

三、总结


一、结构视图

 

二、代码
#include
#include 
#include 
#include 
#include 
//array 容器的大小是固定的,无法动态的扩展或收缩,它只允许访问或者替换存储的元素。
//它比普通数组更安全,且效率并没有因此变差。
//array T 用于指明容器中的存储的具体数据类型,N 必须是常量用于指明容器的大小。
//array 容器以类模板的形式定义在  头文件,并位于命名空间 std 中
#include 
using namespace std;
#define Num 10
#define N 0

//创建array
void test1()
{
	//测试使用变量
	const int n = 10;

	array arrtest11;					//创建具有 10 个 double 类型元素的 array 容器
	array arrtest12{};					//创建,将所有的元素初始化为 0 或者和默认元素类型等效的值
	array arrtest13{ 1,2,3 };			//创建并指定初始化值
	array arrtest14{};					//const常量
	array arrtest15{};				//宏定义常量

	//输出测试
	for (int i = 0; i < n; i++)
		cout << arrtest14[i] << " ";
	cout << endl;
	for (int i = 0; i < Num; i++)
		cout << arrtest15[i] << " ";
	cout << endl;

	typedef array arrtest1;//模板
	arrtest1 c0 = { 0, 1, 2, 3 };
}

//array迭代器用法
void test2()
{
	//测试使用变量
	arrayarrtest2{ 1,2,3,4,5 };

	auto a = arrtest2.begin();				//返回指向容器中第一个元素的迭代器。同begin(arrtest2)
	auto b = arrtest2.end();				//返回指向容器最后一个元素所在位置后一个位置的迭代器。同end(arrtest2)
	while (a != b)
	{
		cout << *a << " ";
		++a;
	}
	cout << endl;
	auto c = arrtest2.rbegin();				//返回指向最后一个元素的迭代器。
	auto d = arrtest2.rend();				//返回指向第一个元素所在位置前一个位置的迭代器。
	while (c != d)
	{
		cout << *c << " ";
		++c;
	}
	cout << endl;
	auto e = arrtest2.cbegin();				//和 begin() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。
	auto f = arrtest2.cend();				//和 end() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。
	while (e != f)
	{
		cout << *e << " ";
		++e;
	}
	cout << endl;
	auto g = arrtest2.crbegin();			//和 rbegin() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。
	auto h = arrtest2.crend();				//和 rend() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。
	while (g != h)
	{
		cout << *g << " ";
		++g;
	}
	cout << endl;
	for (auto first = arrtest2.begin(); first != arrtest2.end(); ++first)//使用for循环输出
	{
		cout << *first << " ";
	}

	//唯一的区别在于其返回的迭代器能否用来修改元素值。
	//*a, b, c, d = 10; 可以修改
	//*e, f, g, h = 10; 不能修改元素
}

//array访问元素
void test3()
{
	//测试使用变量
	array arrtest3{ 1,2,3,4,5 };
	int n;

	//数组形式访问和修改
	cout << arrtest3[0] << endl;
	arrtest3[0] = 0;
	cout << arrtest3[0] << endl;
	//at() 成员函数,能够有效地避免越界访问的情况
	cout << arrtest3.at(0) << endl;
	arrtest3[0] = 1;
	cout << arrtest3.at(0) << endl;
	//get 模板函数,获取到容器的第 n 个元素
	//参数的实参必须是一个在编译时可以确定的常量表达式,所以它不能是一个循环变量
	cout << get(arrtest3) << endl;
	//data() 成员函数,得到指向容器首个元素的指针
	cout << *(arrtest3.data() + 1) << endl;
	//访问最后一个元素
	cout << arrtest3.back() << endl;

	//size() 函数返回容器中元素的个数
	n = arrtest3.size();
	for (int i = 0; i < n; i++)
		cout << arrtest3[i] << " ";
	cout << endl;
}

//swap测试
void test4()
{
	typedef array arrtest4;//模板
	arrtest4 c0 = { 0, 1, 2, 3 };
	arrtest4 c1 = { 4, 5, 6, 7 };

	// display contents " 0 1 2 3"
	for (arrtest4::const_iterator it = c0.begin(); it != c0.end(); ++it)
		cout << " " << *it;
	cout << endl;//0123

	c0.swap(c1);
	for (arrtest4::const_iterator it = c0.begin(); it != c0.end(); ++it)
		cout << " " << *it;
	cout << endl;//4567

	swap(c0, c1);
	for (arrtest4::const_iterator it = c0.begin(); it != c0.end(); ++it)
		cout << " " << *it;
	cout << endl;//0123
}

//array运算符
void test5()
{
	typedef array arrtest5;//模板
	arrtest5 c0 = { 0, 1, 2, 3 };
	arrtest5 c1 = { 4, 5, 6, 7 };

	//!不等于 ==等于
	cout << boolalpha << " " << (c0 != c1) << endl;//true
	cout << boolalpha << " " << (c0 == c1) << endl;//false

	//<小于	<=小于等于 >大于 >=大于等于
	cout << boolalpha << " " << (c0 < c1) << endl;//true
	cout << boolalpha << " " << (c0 > c1) << endl;//false
	cout << boolalpha << " " << (c0 <= c1) << endl;//true
	cout << boolalpha << " " << (c0 >= c1) << endl;//false

	c0 = c1;//赋值
	c0[1];//重载[]
}

//其他用法
void test6()
{
	typedef std::array arrtest6;
	arrtest6 arrtest61 = { 0, 1, 2, 3 };

	cout << boolalpha << " " << arrtest61.empty();//判空
	cout << " " << arrtest61.max_size();//长度
	cout << " " << arrtest61.size();
	arrtest61.fill(3);//清空并赋值3
}

int main()
{
	//test1();
	//test2();
	//test3();
	//test4();
	//test5();
	//test6();
	return 0;
}

三、总结

STL_array学习,参考:C++ STL基本组成(6大组件+13个头文件)、array 类(C++ 标准库) | Microsoft Docs。

内容不全,排版较乱,后续补充。

Lv:没有脑袋

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691361.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号