Init
This commit is contained in:
91
cppdraft/includes.md
Normal file
91
cppdraft/includes.md
Normal file
@@ -0,0 +1,91 @@
|
||||
[includes]
|
||||
|
||||
# 26 Algorithms library [[algorithms]](./#algorithms)
|
||||
|
||||
## 26.8 Sorting and related operations [[alg.sorting]](alg.sorting#includes)
|
||||
|
||||
### 26.8.7 Set operations on sorted structures [[alg.set.operations]](alg.set.operations#includes)
|
||||
|
||||
#### 26.8.7.2 includes [includes]
|
||||
|
||||
[ð](#lib:includes)
|
||||
|
||||
`template<class InputIterator1, class InputIterator2>
|
||||
constexpr bool includes(InputIterator1 first1, InputIterator1 last1,
|
||||
InputIterator2 first2, InputIterator2 last2);
|
||||
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
|
||||
bool includes(ExecutionPolicy&& exec,
|
||||
ForwardIterator1 first1, ForwardIterator1 last1,
|
||||
ForwardIterator2 first2, ForwardIterator2 last2);
|
||||
|
||||
template<class InputIterator1, class InputIterator2, class Compare>
|
||||
constexpr bool includes(InputIterator1 first1, InputIterator1 last1,
|
||||
InputIterator2 first2, InputIterator2 last2,
|
||||
Compare comp);
|
||||
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2, class Compare>
|
||||
bool includes(ExecutionPolicy&& exec,
|
||||
ForwardIterator1 first1, ForwardIterator1 last1,
|
||||
ForwardIterator2 first2, ForwardIterator2 last2,
|
||||
Compare comp);
|
||||
|
||||
template<[input_iterator](iterator.concept.input#concept:input_iterator "24.3.4.9 Concept input_iterator [iterator.concept.input]") I1, [sentinel_for](iterator.concept.sentinel#concept:sentinel_for "24.3.4.7 Concept sentinel_for [iterator.concept.sentinel]")<I1> S1, [input_iterator](iterator.concept.input#concept:input_iterator "24.3.4.9 Concept input_iterator [iterator.concept.input]") I2, [sentinel_for](iterator.concept.sentinel#concept:sentinel_for "24.3.4.7 Concept sentinel_for [iterator.concept.sentinel]")<I2> S2,
|
||||
class Proj1 = identity, class Proj2 = identity,
|
||||
[indirect_strict_weak_order](indirectcallable.indirectinvocable#concept:indirect_strict_weak_order "24.3.6.3 Indirect callables [indirectcallable.indirectinvocable]")<projected<I1, Proj1>,
|
||||
projected<I2, Proj2>> Comp = ranges::less>
|
||||
constexpr bool ranges::includes(I1 first1, S1 last1, I2 first2, S2 last2, Comp comp = {},
|
||||
Proj1 proj1 = {}, Proj2 proj2 = {});
|
||||
template<[input_range](range.refinements#concept:input_range "25.4.6 Other range refinements [range.refinements]") R1, [input_range](range.refinements#concept:input_range "25.4.6 Other range refinements [range.refinements]") R2, class Proj1 = identity,
|
||||
class Proj2 = identity,
|
||||
[indirect_strict_weak_order](indirectcallable.indirectinvocable#concept:indirect_strict_weak_order "24.3.6.3 Indirect callables [indirectcallable.indirectinvocable]")<projected<iterator_t<R1>, Proj1>,
|
||||
projected<iterator_t<R2>, Proj2>> Comp = ranges::less>
|
||||
constexpr bool ranges::includes(R1&& r1, R2&& r2, Comp comp = {},
|
||||
Proj1 proj1 = {}, Proj2 proj2 = {});
|
||||
|
||||
template<[execution-policy](algorithms.parallel.defns#concept:execution-policy "26.3.1 Preamble [algorithms.parallel.defns]") Ep, [random_access_iterator](iterator.concept.random.access#concept:random_access_iterator "24.3.4.13 Concept random_access_iterator [iterator.concept.random.access]") I1, [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_sentinel_for [iterator.concept.sizedsentinel]")<I1> S1,
|
||||
[random_access_iterator](iterator.concept.random.access#concept:random_access_iterator "24.3.4.13 Concept random_access_iterator [iterator.concept.random.access]") I2, [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_sentinel_for [iterator.concept.sizedsentinel]")<I2> S2,
|
||||
class Proj1 = identity, class Proj2 = identity,
|
||||
[indirect_strict_weak_order](indirectcallable.indirectinvocable#concept:indirect_strict_weak_order "24.3.6.3 Indirect callables [indirectcallable.indirectinvocable]")<projected<I1, Proj1>, projected<I2, Proj2>> Comp =
|
||||
ranges::less>
|
||||
bool ranges::includes(Ep&& exec, I1 first1, S1 last1, I2 first2, S2 last2,
|
||||
Comp comp = {}, Proj1 proj1 = {}, Proj2 proj2 = {});
|
||||
template<[execution-policy](algorithms.parallel.defns#concept:execution-policy "26.3.1 Preamble [algorithms.parallel.defns]") Ep, [sized-random-access-range](range.refinements#concept:sized-random-access-range "25.4.6 Other range refinements [range.refinements]") R1, [sized-random-access-range](range.refinements#concept:sized-random-access-range "25.4.6 Other range refinements [range.refinements]") R2,
|
||||
class Proj1 = identity, class Proj2 = identity,
|
||||
[indirect_strict_weak_order](indirectcallable.indirectinvocable#concept:indirect_strict_weak_order "24.3.6.3 Indirect callables [indirectcallable.indirectinvocable]")<projected<iterator_t<R1>, Proj1>,
|
||||
projected<iterator_t<R2>, Proj2>> Comp = ranges::less>
|
||||
bool ranges::includes(Ep&& exec, R1&& r1, R2&& r2,
|
||||
Comp comp = {}, Proj1 proj1 = {}, Proj2 proj2 = {});
|
||||
`
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L10325)
|
||||
|
||||
Let comp be less{},proj1 be identity{}, andproj2 be identity{},
|
||||
for the overloads with no parameters by those names[.](#1.sentence-1)
|
||||
|
||||
[2](#2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L10331)
|
||||
|
||||
*Preconditions*: The ranges [first1, last1) and [first2, last2) are sorted
|
||||
with respect to comp and proj1 or proj2, respectively[.](#2.sentence-1)
|
||||
|
||||
[3](#3)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L10336)
|
||||
|
||||
*Returns*: true if and only if [first2, last2) is a subsequence of [first1, last1)[.](#3.sentence-1)
|
||||
|
||||
[*Note [1](#note-1)*:
|
||||
|
||||
A sequence S is a subsequence of another sequence T if S can be obtained
|
||||
from T by removing some, all, or none of T's elements and keeping the
|
||||
remaining elements in the same order[.](#3.sentence-2)
|
||||
|
||||
â *end note*]
|
||||
|
||||
[4](#4)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L10346)
|
||||
|
||||
*Complexity*: At most 2 * ((last1 - first1) + (last2 - first2)) - 1 comparisons and applications of each projection[.](#4.sentence-1)
|
||||
Reference in New Issue
Block a user