std::copy_n - cppreference.com (original) (raw)
- Copies exactly count values from the range beginning at first to the range beginning at result. Formally, for each integer i in
[
0,
count)
, performs *(result + i) = *(first + i).
Overlap of ranges is formally permitted, but leads to unpredictable ordering of the results.
- Same as (1), but executed according to policy.
This overload participates in overload resolution only if all following conditions are satisfied:
Contents
- 1 Parameters
- 2 Return value
- 3 Complexity
- 4 Exceptions
- 5 Possible implementation
- 6 Example
- 7 See also
[edit] Parameters
first | - | the beginning of the range of elements to copy from |
---|---|---|
count | - | number of the elements to copy |
result | - | the beginning of the destination range |
policy | - | the execution policy to use |
Type requirements | ||
-InputIt must meet the requirements of LegacyInputIterator. | ||
-OutputIt must meet the requirements of LegacyOutputIterator. | ||
-ForwardIt1, ForwardIt2 must meet the requirements of LegacyForwardIterator. |
[edit] Return value
Iterator in the destination range, pointing past the last element copied if count > 0 or result otherwise.
[edit] Complexity
Zero assignments if count < 0; count assignments otherwise.
[edit] Exceptions
The overload with a template parameter named ExecutionPolicy
reports errors as follows:
- If execution of a function invoked as part of the algorithm throws an exception and
ExecutionPolicy
is one of the standard policies, std::terminate is called. For any otherExecutionPolicy
, the behavior is implementation-defined. - If the algorithm fails to allocate memory, std::bad_alloc is thrown.
[edit] Possible implementation
template<class InputIt, class Size, class OutputIt> constexpr //< since C++20 OutputIt copy_n(InputIt first, Size count, OutputIt result) { if (count > 0) { *result = *first; ++result; for (Size i = 1; i != count; ++i, (void)++result) *result = *++first; } return result; }
[edit] Example
[edit] See also
| | copies a range of elements to a new location (function template) [edit] | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | copies a number of elements to a new location(algorithm function object)[edit] |