std::array
时间: 2023-08-28 13:04:08 浏览: 115
std::array是C++11中引入的一种数组类型,相比于内置数组,它更安全、更容易使用。std::array对象的大小是固定的,因此不支持添加和删除元素以及改变容器大小的操作。\[1\]
在定义std::array时,可以使用{}来直接初始化,也可以使用另外一个std::array来构造,但不能使用内置数组来构造。例如,可以使用以下方式定义std::array对象:
```cpp
std::array<int, 5> a0 = {0, 1, 2, 3, 4}; //正确
std::array<int, 5> a1 = a0; //正确
```
但是以下方式是错误的:
```cpp
int m = 5;
int b\[m\]; //正确,内置数组
std::array<int, 5> a2; //正确
std::array<int, m> a3; //错误,array不可以用变量指定
std::array<int, 5> a4 = b; //错误,array不可以用数组指定
```
\[2\]
std::array可以使用一些算法函数来对数组进行操作,例如排序和反转。以下是一些示例代码:
```cpp
#include <iostream>
#include <algorithm>
#include <array>
int main() {
std::array<int, 5> a1 = {4, 0, 2, 1, 3};
std::array<int, 5> a2;
std::sort(a1.begin(), a1.end()); //排序函数
for(int a: a1)
std::cout << a << ' ';
std::cout << std::endl;
std::reverse(a1.begin(), a1.end()); //反转a1
for (std::array<int, 5>::iterator iter = a1.begin(); iter != a1.end(); ++iter)
std::cout << *iter << " ";
std::cout << std::endl;
std::reverse_copy(a1.begin(), a1.end(), a2.begin()); //反转a1的内容拷贝到a2
for (int i = 0; i < a2.size(); ++i)
std::cout << a2\[i\] << " ";
std::cout << std::endl;
}
```
\[3\]
这段代码演示了如何使用std::array的begin()和end()函数来进行排序、反转和拷贝操作。
#### 引用[.reference_title]
- *1* [C++11 std::array 用法小结](https://blog.csdn.net/hellokandy/article/details/125880281)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [【C++】C++11的std::array的详细剖析](https://blog.csdn.net/qq_38410730/article/details/102802239)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文