
目录
一、结构视图
二、代码
三、总结
一、结构视图
二、代码
#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() { //测试使用变量 array arrtest2{ 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:没有脑袋
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)