初始化
1. std::array<double,10> arr; 创建10个浮点型元素,但是未显示指定10个元素的值,因此各个元素的值是不确定的,array容器是不会做默认初始化操作
2. std::array<double,10> arr{}; 所有元素默认初始化为0.0
3. std::array<double,19> arr{1.9,20.2,1.2,2}; 只初始化了前4个元素,剩余的元素都被初始化为0.0
使用
#include <iostream> //需要引入 array 头文件 #include <array> #include <vector> using namespace std; /* (1) at(n) 返回容器n中的引用 (2) get<n> 模板函数,能够获取容器的第n个元素 (3) begin() 返回第一个元素的迭代器 (4) end() 返回最后一个元素之后的一个位置的正向迭代器n+1 (5) data() 得到指向容器首个元素的指针,通过该指针,可以获得容器中各个元素 (6) size() 返回容器元素的个数,返回值size_t */ int main() { cout << "------基本用法-------" << endl; array<int, 4> arr1{}; // 初始化 for (int i = 0; i < arr1.size(); i++) { arr1.at(i) = i+10; } for (auto b1 = arr1.begin(); b1 < arr1.end(); b1++) { cout << *b1 << endl; } cout << "-------随机访问------" << endl; array<int, 4> arr2; int h = 22; auto first = arr2.begin(); auto end = arr2.end(); // 初始化 while (first != end) { *first = h; ++first; h++; } first = arr2.begin(); while (first != end) { cout << *first << endl; ++first; } cout << "-------访问单个------" << endl; array<string, 3> arr3{ "china","english","guba" }; cout << get<2>(arr3) << endl; // get<3>越界 cout << arr3.at(2) << endl; // at(n) cout << *(arr3.data()) << endl; cout << *(arr3.data()+1) << endl; cout << arr3[1] << endl; cout << "-------访问多个------" << endl; array<int, 5> arr4; array<int, 5> arr5; // 初始化arr4 for (size_t b2 = 0; b2 < arr4.size(); b2++) { arr4.at(b2) = 9; } // 初始化arr5 int n = 10; for (auto& b3 : arr5) { b3 = n; n++; } // 打印arr4的值 for (auto b4 = arr4.begin(); b4 < arr4.end(); b4++) { cout <<"b4: "<< *b4 << endl; } // 打印arr5的值 for (auto b5 = arr5.begin(); b5 < arr5.end(); b5++) { cout << "b5: " << *b5 << endl; } cout << "-------升级------" << endl; // 当两个array容器满足大小相同并且保持元素类型相同时,可以直接赋值 array<char, 30>arr6{ "you are rich" }; array<char, 30>arr7{ "you need food" }; arr6 = arr7; cout << arr6.data() << endl; cout << arr7.data() << endl; system("pause"); return 1; }