一、声明与初始化
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 5> arr1;
array<int, 5> arr2 = { 1, 2, 3, 4, 5 };
array<int, 5> arr3{ 1, 2, 3, 4, 5 };
return 0;
}
二、元素访问
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 5> arr = { 1, 2, 3, 4, 5 };
cout << arr[2] << endl;
try {
cout << arr.at(2) << endl;
cout << arr.at(10) << endl;
}
catch (out_of_range& e) {
cerr << e.what() << endl;
}
return 0;
}
# 输出结果
3
3
invalid array<T, N> subscript
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 5> arr = { 1, 2, 3, 4, 5 };
cout << arr.front() << endl;
cout << arr.back() << endl;
return 0;
}
# 输出结果
1
5
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 5> arr = { 1, 2, 3, 4, 5 };
int* p = arr.data();
cout << *p << endl;
cout << *(p + 2) << endl;
return 0;
}
# 输出结果
1
3
三、容量判断
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 5> arr;
array<int, 0> empty_arr;
cout << "arr 获取大小:" << arr.size() << endl;
cout << "empty_arr 获取大小:" << empty_arr.size() << endl;
cout << "arr 检查是否为空:" << arr.empty() << endl;
cout << "empty_arr 检查是否为空:" << empty_arr.empty() << endl;
return 0;
}
# 输出结果
arr 获取大小:5
empty_arr 获取大小:0
arr 检查是否为空:0
empty_arr 检查是否为空:1
四、元素遍历
- 索引遍历
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 5> arr = { 1, 2, 3, 4, 5 };
for (size_t i = 0; i < arr.size(); ++i) {
cout << arr[i] << endl;
}
return 0;
}
- 迭代器遍历
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 5> arr = { 1, 2, 3, 4, 5 };
for (auto it = arr.begin(); it != arr.end(); it++) {
cout << *it << endl;
}
return 0;
}
- 范围的 for 循环遍历
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 5> arr = { 1, 2, 3, 4, 5 };
for (int val : arr) {
cout << val << endl;
}
return 0;
}
五、其他操作
- 填充数组
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 5> arr;
arr.fill(10);
for (size_t i = 0; i < arr.size(); ++i) {
cout << arr[i] << endl;
}
return 0;
}
# 输出结果
10
10
10
10
10
- 交换内容
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 5> arr1 = { 1, 2, 3, 4, 5 };
array<int, 5> arr2 = { 6, 7, 8, 9, 10 };
arr1.swap(arr2);
cout << "arr1: ";
for (size_t i = 0; i < arr1.size(); ++i) {
cout << arr1[i] << " ";
}
cout << endl;
cout << "arr2: ";
for (size_t i = 0; i < arr2.size(); ++i) {
cout << arr2[i] << " ";
}
cout << endl;
return 0;
}
# 输出结果
arr1: 6 7 8 9 10
arr2: 1 2 3 4 5