tmp/tmpw2fvq_6o/{from.md → to.md}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
-
##
|
| 2 |
|
| 3 |
In addition to being available via inclusion of the `<iterator>` header,
|
| 4 |
the function templates in [[iterator.range]] are available when any of
|
| 5 |
the following headers are included: `<array>`, `<deque>`,
|
| 6 |
`<forward_list>`, `<list>`, `<map>`, `<regex>`, `<set>`, `<string>`,
|
|
@@ -19,21 +19,85 @@ template <class C> auto end(const C& c) -> decltype(c.end());
|
|
| 19 |
```
|
| 20 |
|
| 21 |
*Returns:* `c.end()`.
|
| 22 |
|
| 23 |
``` cpp
|
| 24 |
-
template <class T, size_t N> T* begin(T (&array)[N]);
|
| 25 |
```
|
| 26 |
|
| 27 |
*Returns:* `array`.
|
| 28 |
|
| 29 |
``` cpp
|
| 30 |
-
template <class T, size_t N> T* end(T (&array)[N]);
|
| 31 |
```
|
| 32 |
|
| 33 |
*Returns:* `array + N`.
|
| 34 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
<!-- Link reference definitions -->
|
| 36 |
[back.insert.iter.cons]: #back.insert.iter.cons
|
| 37 |
[back.insert.iter.op*]: #back.insert.iter.op*
|
| 38 |
[back.insert.iter.op++]: #back.insert.iter.op++
|
| 39 |
[back.insert.iter.op=]: #back.insert.iter.op=
|
|
@@ -111,10 +175,11 @@ template <class T, size_t N> T* end(T (&array)[N]);
|
|
| 111 |
[output.iterators]: #output.iterators
|
| 112 |
[predef.iterators]: #predef.iterators
|
| 113 |
[random.access.iterators]: #random.access.iterators
|
| 114 |
[reverse.iter.cons]: #reverse.iter.cons
|
| 115 |
[reverse.iter.conv]: #reverse.iter.conv
|
|
|
|
| 116 |
[reverse.iter.op!=]: #reverse.iter.op!=
|
| 117 |
[reverse.iter.op+]: #reverse.iter.op+
|
| 118 |
[reverse.iter.op++]: #reverse.iter.op++
|
| 119 |
[reverse.iter.op+=]: #reverse.iter.op+=
|
| 120 |
[reverse.iter.op-]: #reverse.iter.op-
|
|
|
|
| 1 |
+
## range access <a id="iterator.range">[[iterator.range]]</a>
|
| 2 |
|
| 3 |
In addition to being available via inclusion of the `<iterator>` header,
|
| 4 |
the function templates in [[iterator.range]] are available when any of
|
| 5 |
the following headers are included: `<array>`, `<deque>`,
|
| 6 |
`<forward_list>`, `<list>`, `<map>`, `<regex>`, `<set>`, `<string>`,
|
|
|
|
| 19 |
```
|
| 20 |
|
| 21 |
*Returns:* `c.end()`.
|
| 22 |
|
| 23 |
``` cpp
|
| 24 |
+
template <class T, size_t N> constexpr T* begin(T (&array)[N]) noexcept;
|
| 25 |
```
|
| 26 |
|
| 27 |
*Returns:* `array`.
|
| 28 |
|
| 29 |
``` cpp
|
| 30 |
+
template <class T, size_t N> constexpr T* end(T (&array)[N]) noexcept;
|
| 31 |
```
|
| 32 |
|
| 33 |
*Returns:* `array + N`.
|
| 34 |
|
| 35 |
+
``` cpp
|
| 36 |
+
template <class C> constexpr auto cbegin(const C& c) noexcept(noexcept(std::begin(c)))
|
| 37 |
+
-> decltype(std::begin(c));
|
| 38 |
+
```
|
| 39 |
+
|
| 40 |
+
*Returns:* `std::begin(c)`.
|
| 41 |
+
|
| 42 |
+
``` cpp
|
| 43 |
+
template <class C> constexpr auto cend(const C& c) noexcept(noexcept(std::end(c)))
|
| 44 |
+
-> decltype(std::end(c));
|
| 45 |
+
```
|
| 46 |
+
|
| 47 |
+
*Returns:* `std::end(c)`.
|
| 48 |
+
|
| 49 |
+
``` cpp
|
| 50 |
+
template <class C> auto rbegin(C& c) -> decltype(c.rbegin());
|
| 51 |
+
template <class C> auto rbegin(const C& c) -> decltype(c.rbegin());
|
| 52 |
+
```
|
| 53 |
+
|
| 54 |
+
*Returns:* `c.rbegin()`.
|
| 55 |
+
|
| 56 |
+
``` cpp
|
| 57 |
+
template <class C> auto rend(C& c) -> decltype(c.rend());
|
| 58 |
+
template <class C> auto rend(const C& c) -> decltype(c.rend());
|
| 59 |
+
```
|
| 60 |
+
|
| 61 |
+
*Returns:* `c.rend()`.
|
| 62 |
+
|
| 63 |
+
``` cpp
|
| 64 |
+
template <class T, size_t N> reverse_iterator<T*> rbegin(T (&array)[N]);
|
| 65 |
+
```
|
| 66 |
+
|
| 67 |
+
*Returns:* `reverse_iterator<T*>(array + N)`.
|
| 68 |
+
|
| 69 |
+
``` cpp
|
| 70 |
+
template <class T, size_t N> reverse_iterator<T*> rend(T (&array)[N]);
|
| 71 |
+
```
|
| 72 |
+
|
| 73 |
+
*Returns:* `reverse_iterator<T*>(array)`.
|
| 74 |
+
|
| 75 |
+
``` cpp
|
| 76 |
+
template <class E> reverse_iterator<const E*> rbegin(initializer_list<E> il);
|
| 77 |
+
```
|
| 78 |
+
|
| 79 |
+
*Returns:* `reverse_iterator<const E*>(il.end())`.
|
| 80 |
+
|
| 81 |
+
``` cpp
|
| 82 |
+
template <class E> reverse_iterator<const E*> rend(initializer_list<E> il);
|
| 83 |
+
```
|
| 84 |
+
|
| 85 |
+
*Returns:* `reverse_iterator<const E*>(il.begin())`.
|
| 86 |
+
|
| 87 |
+
``` cpp
|
| 88 |
+
template <class C> auto crbegin(const C& c) -> decltype(std::rbegin(c));
|
| 89 |
+
```
|
| 90 |
+
|
| 91 |
+
*Returns:* `std::rbegin(c)`.
|
| 92 |
+
|
| 93 |
+
``` cpp
|
| 94 |
+
template <class C> auto crend(const C& c) -> decltype(std::rend(c));
|
| 95 |
+
```
|
| 96 |
+
|
| 97 |
+
*Returns:* `std::rend(c)`.
|
| 98 |
+
|
| 99 |
<!-- Link reference definitions -->
|
| 100 |
[back.insert.iter.cons]: #back.insert.iter.cons
|
| 101 |
[back.insert.iter.op*]: #back.insert.iter.op*
|
| 102 |
[back.insert.iter.op++]: #back.insert.iter.op++
|
| 103 |
[back.insert.iter.op=]: #back.insert.iter.op=
|
|
|
|
| 175 |
[output.iterators]: #output.iterators
|
| 176 |
[predef.iterators]: #predef.iterators
|
| 177 |
[random.access.iterators]: #random.access.iterators
|
| 178 |
[reverse.iter.cons]: #reverse.iter.cons
|
| 179 |
[reverse.iter.conv]: #reverse.iter.conv
|
| 180 |
+
[reverse.iter.make]: #reverse.iter.make
|
| 181 |
[reverse.iter.op!=]: #reverse.iter.op!=
|
| 182 |
[reverse.iter.op+]: #reverse.iter.op+
|
| 183 |
[reverse.iter.op++]: #reverse.iter.op++
|
| 184 |
[reverse.iter.op+=]: #reverse.iter.op+=
|
| 185 |
[reverse.iter.op-]: #reverse.iter.op-
|