Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/named req/ContiguousIterator"

From cppreference.com
< cpp‎ | named req
m (See also: ~ {{see_also_iterator_library}})
Line 2: Line 2:
 
{{cpp/named req/navbar}}
 
{{cpp/named req/navbar}}
  
A {{named req|ContiguousIterator}} is a {{named req|RandomAccessIterator}} whose logically adjacent elements are also physically adjacent in memory.
+
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 {{named req/core|ContiguousIterator}}.
 
A pointer to an element of an array satisfies all requirements of {{named req/core|ContiguousIterator}}.
Line 9: Line 9:
 
The type {{tt|It}} satisfies {{named req/core|ContiguousIterator}} if
 
The type {{tt|It}} satisfies {{named req/core|ContiguousIterator}} if
  
* The type {{tt|It}} satisfies {{named req|RandomAccessIterator}}
+
* The type {{tt|It}} satisfies {{named req|Iterator}}
  
 
And, for every
 
And, for every
Line 37: Line 37:
  
 
{{rrev|since=c++20|
 
{{rrev|since=c++20|
{{named req/core|ContiguousIterator}} is partially 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 also required to model {{tt|contiguous_iterator}} in 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.
 
}}
 
}}
  

Revision as of 17:19, 19 May 2021

 
 
C++ named requirements
 

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

Requirements

The type It satisfies LegacyContiguousIterator if

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

Standard library

The following standard library types are LegacyContiguousIterators.

Notes

Fancy pointer to object types are also required to satisfy LegacyContiguousIterator.

LegacyContiguousIterator is replaced with the contiguous_iterator concept: iterator types in the standard library that are required to satisfy LegacyContiguousIterator in C++17 are required to model contiguous_iterator in C++20.

(since C++20)

See also

specifies that a random_access_iterator is a contiguous iterator, referring to elements that are contiguous in memory
(concept) [edit]
Iterator library provides definitions for iterators, iterator traits, adaptors, and utility functions