std:: distance
|
Definiert im Header
<iterator>
|
||
|
template
<
class
InputIt
>
typename
std::
iterator_traits
<
InputIt
>
::
difference_type
|
(constexpr seit C++17) | |
Gibt die Anzahl der Hops von first zu last zurück.
Wenn
InputIt
kein
LegacyRandomAccessIterator
ist, ist das Verhalten undefiniert, wenn
last
nicht von
first
aus
erreichbar
ist.
Wenn
InputIt
ein
LegacyRandomAccessIterator
ist, ist das Verhalten undefiniert, wenn
first
und
last
nicht voneinander erreichbar sind.
Inhalt
Parameter
RückgabewertDie Anzahl der Inkremente, die benötigt werden, um von first zu last zu gelangen.
KomplexitätLinear.
Wenn jedoch
Mögliche ImplementierungSiehe auch die Implementierungen in libstdc++ und libc++ .
Beispiel
Diesen Code ausführen
#include <iostream> #include <iterator> #include <vector> int main() { std::vector<int> v{3, 1, 4}; std::cout << "distance(first, last) = " << std::distance(v.begin(), v.end()) << '\n' << "distance(last, first) = " << std::distance(v.end(), v.begin()) << '\n'; // the behavior is undefined (until LWG940) static constexpr auto il = {3, 1, 4}; // Since C++17 `distance` can be used in constexpr context. static_assert(std::distance(il.begin(), il.end()) == 3); static_assert(std::distance(il.end(), il.begin()) == -3); } Ausgabe: distance(first, last) = 3 distance(last, first) = -3 FehlerberichteDie folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
Siehe auch
| |||||||||||||||||||||||||||||||||