C++ array容器
特点
array是固定大小数组。
C++中,array是一个模板类,提供了数组的功能,在许多方面比原始的 C 风格数组更为强大和灵活。
主要特点
- 固定大小: std::array 的大小在编译时确定,运行时无法修改。
- 包含全部 STL 功能: std::array 支持 STL 的所有算法和迭代器。
- 直接存储元素: 元素直接存储在 std::array 对象内部,而非动态分配内存。
- 支持范围 for 循环: 方便的与范围 for 循环结合使用。
- 成员函数和属性: 提供许多成员函数,例如 size()、fill() 和 swap() 等。
第1/2段示例代码
简单常用API
// CMake_LeetCodeHot100.cpp: 定义应用程序的入口点。
//
#include "CMake_LeetCodeHot100.h"
#include <vector>
#include <iostream>
#include <algorithm>
#include <array>
#include <iostream>
#include <ctime>
#include <stdlib.h>
using namespace std;
#define ASIZE 100000
void test_array() {
cout << "\ntest_array()...\n";
array<int, ASIZE> a;
clock_t timeStart = clock(); // 开始时间
for (int i = 0; i < ASIZE; i++) {
a[i] = i;
}
cout << "milli-seconds:" << (clock() - timeStart) << endl;
// 输出数组大小
cout << "array.size():" << a.size()<<endl;
// 输出数组第一个元素
cout << "array.front():" << a.front() << endl;
// 输出数组最后一个元素
cout << "array.back():" << a.back()<<endl;
// 输出数组中第一个元素的地址,可用于一块区域整体赋值
cout << "array.data():" << a.data() << endl;
}
int main()
{
test_array();
getchar();
return 0;
}
第2/2段代码
另外一段参考代码:
// CMake_LeetCodeHot100.cpp: 定义应用程序的入口点。
//
#include "CMake_LeetCodeHot100.h"
#include <iostream>
#include <algorithm>
#include <array>
using namespace std;
#define ASIZE 100000
int main()
{
// 声明一个包含 5 个整数的 array
std::array<int, 5> arr = { 1, 2, 3, 4, 5 };
// 输出 array 的大小
std::cout << "arr size: " << arr.size() << std::endl;
// 使用范围 for 循环输出元素
std::cout << "Elements in arr: ";
for (const auto& element : arr) {
std::cout << element << " ";
}
std::cout << std::endl;
// 使用 std::fill 填充 array
arr.fill(10);
std::cout << "After fill: ";
for (const auto& element : arr) {
std::cout << element << " ";
}
std::cout << std::endl;
// 交换两个 array
std::array<int, 5> arr2 = { 5, 4, 3, 2, 1 };
arr.swap(arr2);
std::cout << "After swap: ";
for (const auto& element : arr) {
std::cout << element << " ";
}
std::cout << std::endl;
// 使用 std::sort 对 array 进行排序
std::sort(arr.begin(), arr.end());
std::cout << "After sort: ";
for (const auto& element : arr) {
std::cout << element << " ";
}
std::cout << std::endl;
getchar();
return 0;
}