std::iterator_traits – cppreference.com
Aus cppreference.com
<metanoindex/>
<tbody> </tbody>
| definiert in Header <iterator> |
||
|
|
||
|
|
||
|
|
||
std::iterator_traits ist die Art Trait-Klasse, die einheitliche Schnittstelle zu den Eigenschaften des Iterator-Typen. Dies macht es möglich, Algorithmen nur hinsichtlich Iteratoren implementieren .
Original:
std::iterator_traits is the type trait class that provides uniform interface to the properties of iterator types. This makes it possible to implement algorithms only in terms of iterators.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Mitglied Typen
Mitglied Typ Original: Member type The text has been machine-translated via Google Translate. |
Definition |
difference_type
|
Iterator::difference_type
|
value_type
|
Iterator::value_type
|
pointer
|
Iterator::pointer
|
reference
|
Iterator::reference
|
iterator_category
|
Iterator::iterator_category
|
Spezialisierungen
Diese Art Charakterzug kann spezialisiert für Typen, die als Iteratoren verwendet werden kann vom Benutzer zur Verfügung gestellt werden. Die Standard-Bibliothek bietet zwei partielle Spezialisierungen für Zeigertypen T *, die es ermöglicht, alle Iterator-basierte Algorithmen mit rohen Zeigern macht .
Original:
This type trait may be specialized for user-provided types that may be used as iterators. The standard library provides two partial specializations for pointer types T*, which makes it possible to use all iterator-based algorithms with raw pointers.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
T * Spezialisierung Mitglied Typen
Mitglied Typ Original: Member type The text has been machine-translated via Google Translate. |
Definition |
difference_type
|
std::ptrdiff_t |
value_type
|
T
|
pointer
|
T*
|
reference
|
T&
|
iterator_category
|
std::random_access_iterator_tag |
const T * Spezialisierung Mitglied Typen
Mitglied Typ Original: Member type The text has been machine-translated via Google Translate. |
Definition |
difference_type
|
std::ptrdiff_t |
value_type
|
T
|
pointer
|
const T*
|
reference
|
const T&
|
iterator_category
|
std::random_access_iterator_tag |
Beispiel
Allzweck-reverse ()-Implementierung für bidirektionale Iteratoren
Original:
general-purpose reverse() implementation for bidirectional iterators
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream> #include <iterator> #include <vector> #include <list> template<class BDIter> void my_reverse(BDIter first, BDIter last) { typename std::iterator_traits<BDIter>::difference_type n = std::distance(first, last); --n; while(n > 0) { typename std::iterator_traits<BDIter>::value_type tmp = *first; *first++ = *--last; *last = tmp; n -= 2; } } int main() { std::vector<int> v{1,2,3,4,5}; my_reverse(v.begin(), v.end()); for(int n : v) std::cout << n << ' '; std::cout << '\n'; std::list<int> l{1,2,3,4,5}; my_reverse(l.begin(), l.end()); for(auto n : l) std::cout << n << ' '; std::cout << '\n'; // std::istreambuf_iterator<char> i1(std::cin), i2; // my_reverse(i1, i2); // compilation error }
Output: