Difference between revisions of "cpp/named req/ContiguousIterator"
From cppreference.com
(Created page with "{{cpp/concept/title|ContiguousIterator}} {{cpp/concept/navbar}} A {{tt|ContiguousIterator}} is an {{concept|Iterator}} whose logically adjacent elements are also physically a...") |
m (+C++17 in title) |
||
(20 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
− | {{cpp/ | + | {{cpp/named req/title|ContiguousIterator|notes={{mark since c++17}}}} |
− | {{cpp/ | + | {{cpp/named req/navbar}} |
− | A {{ | + | A {{named req|ContiguousIterator}} is a {{named req|Iterator}} whose logically adjacent elements are also physically adjacent in memory. |
− | A pointer to an element of an array satisfies all requirements of {{ | + | A pointer to an element of an array satisfies all requirements of {{named req/core|ContiguousIterator}}. |
− | + | ||
− | + | ||
===Requirements=== | ===Requirements=== | ||
− | The type {{ | + | The type {{c|It}} satisfies {{named req/core|ContiguousIterator}} if |
+ | * The type {{c|It}} satisfies {{named req|Iterator}} | ||
− | * | + | And, for every |
+ | * {{c|a}}, a dereferenceable iterator of type {{c|It}} | ||
+ | * {{c|n}}, an integral value | ||
− | + | such that | |
− | + | ||
− | + | ||
− | {{c|a + n}} is valid and | + | * {{c|a + n}} is a valid and dereferenceable iterator value |
− | + | then | |
− | The following standard library types are {{ | + | * {{c|*(a + n)}} is equivalent to {{c|*(std::addressof(*a) + n)}}. |
+ | |||
+ | ===Standard library=== | ||
+ | The following standard library types are {{named req|ContiguousIterator}}s. | ||
* {{ltt|cpp/container/array|array::iterator}}. | * {{ltt|cpp/container/array|array::iterator}}. | ||
* {{ltt|cpp/string/basic_string_view|basic_string_view::iterator}}. | * {{ltt|cpp/string/basic_string_view|basic_string_view::iterator}}. | ||
− | * {{ltt|cpp/container/vector|vector::iterator}} for {{ | + | * {{ltt|cpp/string/basic_string|basic_string::iterator}}. |
− | * The return type of {{ltt|cpp/numeric/valarray/begin2|begin{{dsc small|(valarray)}}}} and {{ltt|cpp/numeric/valarray/end2|end{{dsc small|(valarray)}}}} | + | * {{ltt|cpp/container/vector|vector::iterator}} for {{tt|value_type}} other than {{c|bool}}. |
+ | * The return type of {{ltt|cpp/numeric/valarray/begin2|begin{{dsc small|(valarray)}}}} and {{ltt|cpp/numeric/valarray/end2|end{{dsc small|(valarray)}}}}. | ||
+ | |||
+ | ===Notes=== | ||
+ | [[cpp/named req/Allocator#Fancy pointers|Fancy pointer]] to object types are also required to satisfy {{named req/core|ContiguousIterator}}. | ||
+ | |||
+ | {{rrev|since=c++20| | ||
+ | {{named req/core|ContiguousIterator}} is replaced with the {{lconcept|contiguous_iterator}} concept: iterator types in the standard library that are required to satisfy {{named req/core|ContiguousIterator}} in C++17 are required to model {{tt|contiguous_iterator}} in C++20. | ||
+ | }} | ||
===See also=== | ===See also=== | ||
− | + | {{dsc begin}} | |
+ | {{dsc inc | cpp/iterator/dsc contiguous_iterator}} | ||
+ | {{see_also_iterator_library}} | ||
+ | {{dsc end}} | ||
− | + | {{langlinks|de|es|fr|it|ja|pt|ru|zh}} | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Latest revision as of 12:02, 8 November 2022
A LegacyContiguousIterator is a LegacyIterator whose logically adjacent elements are also physically adjacent in memory.
A pointer to an element of an array satisfies all requirements of LegacyContiguousIterator.
Contents |
[edit] Requirements
The type It satisfies LegacyContiguousIterator if
- The type It satisfies LegacyIterator
And, for every
- a, a dereferenceable iterator of type It
- n, an integral value
such that
- a + n is a valid and dereferenceable iterator value
then
- *(a + n) is equivalent to *(std::addressof(*a) + n).
[edit] Standard library
The following standard library types are LegacyContiguousIterators.
- array::iterator.
- basic_string_view::iterator.
- basic_string::iterator.
- vector::iterator for
value_type
other than bool. - The return type of begin(valarray) and end(valarray).
[edit] Notes
Fancy pointer to object types are also required to satisfy LegacyContiguousIterator.
LegacyContiguousIterator is replaced with the |
(since C++20) |
[edit] See also
(C++20) |
specifies that a random_access_iterator is a contiguous iterator, referring to elements that are contiguous in memory (concept) |
Iterator library | provides definitions for iterators, iterator traits, adaptors, and utility functions |