Unverified Commit 998dbb10 authored by Shuhao Zhang's avatar Shuhao Zhang Committed by GitHub
Browse files

delete array in new.md

parent 282c8c7e
Loading
Loading
Loading
Loading
+0 −82
Original line number Diff line number Diff line
@@ -261,88 +261,6 @@ std::swap(tupA, tupB);
std::cout << std::get<1>(tupA) << std::endl;
```

## std::array

 `std::array` 定义于头文件 `<array>` ,是封装固定大小数组的容器,其语义等同于保有一个 C 风格数组作为其唯一非静态数据成员的结构体。来看一个例子

```cpp
#include <algorithm>
#include <array>
#include <iostream>

int main() {
  std::array<int, 5> a = {1, 9, 2, 6, 0};
  std::array<int, 5> b = a;
  std::sort(a.begin(), a.end());
  for (auto i : a) std::cout << i << " ";
  std::cout << std::endl << a[0] << " " << a.front() << std::endl;
  std::cout << (a != b) << std::endl;
}
```

### 成员函数

#### 隐式定义的成员函数

| 函数            | 作用                                  |
| ------------- | ----------------------------------- |
|  `operator=`  | 以来自另一 `array` 的每个元素重写 `array` 的对应元素 |

#### 元素访问

| 函数             | 作用                    |
| -------------- | --------------------- |
|  `at`          | 访问指定的元素,同时进行越界检查      |
|  `operator[]`  | 访问指定的元素, **不** 进行越界检查 |
|  `front`       | 访问第一个元素               |
|  `back`        | 访问最后一个元素              |
|  `data`        | 返回指向内存中数组第一个元素的指针     |

 `at` 若遇 `pos >= size()` 的情况会抛出 `std::out_of_range`

#### 容量

| 函数           | 作用          |
| ------------ | ----------- |
|  `empty`     | 检查容器是否为空    |
|  `size`      | 返回容纳的元素数    |
|  `max_size`  | 返回可容纳的最大元素数 |

由于每个 `array` 都是固定大小容器, `size()` 返回的值等于 `max_size()` 返回的值。

### 操作

| 函数       | 作用       |
| -------- | -------- |
|  `fill`  | 以指定值填充容器 |
|  `swap`  | 交换内容     |

 **注意,交换两个 `array` 是 $\Theta(\text{size})$ 的,而非与常规 STL 容器一样为 $O(1)$ 。** 

### 非成员函数

| 函数              | 作用                  |
| --------------- | ------------------- |
|  `operator==` 等 | 按照字典序比较 `array` 中的值 |
|  `std::get`     | 访问 `array` 的一个元素    |
|  `std::swap`    | 特化的 `std::swap` 算法  |

例子

```cpp
#include <array>
#include <iostream>

int main() {
  std::array<int, 5> a;
  a[0] = 1;
  std::cout << a.size() << " " << a.max_size() << std::endl;
  a.fill(0x7f7f7f7f);
  std::cout << a.front() << " " << a.at(4) << std::endl;
  return 0;
}
```

## std::function

类模板 `std::function` 是通用多态函数封装器,定义于头文件 `<functional>``std::function` 的实例能存储、复制及调用任何可调用(_Callable_)目标——函数、Lambda 表达式或其他函数对象,还有指向成员函数指针和指向数据成员指针。