random_access_iterator_tag Struct
Třída, která poskytuje návratový typ pro iterator_category funkci, která představuje náhodný přístup iterace.
struct random_access_iterator_tag
: public bidirectional_iterator_tag {};
Poznámky
Kategorie tříd značky se používají jako kompilace značky pro výběr algoritmu.Funkce šablony potřebuje vyhledat nejvíce specifické kategorie argumentu iterace může použít algoritmus nejúčinnější při kompilaci.Pro každý iterační typu Iterator, iterator_traits<Iterator>:: iterator_category musí být definován nejvíce specifické kategorie tag, který popisuje chování iteraci.
Typ je stejné jako iterační<Iter>:: iterator_category při Iter popisuje objekt, který může sloužit jako iterační náhodný přístup.
Příklad
// iterator_rait.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
#include <list>
using namespace std;
int main( )
{
vector<int> vi;
vector<char> vc;
list<char> lc;
iterator_traits<vector<int>:: iterator>::iterator_category cati;
iterator_traits<vector<char>:: iterator>::iterator_category catc;
iterator_traits<list<char>:: iterator>::iterator_category catlc;
// These are both random-access iterators
cout << "The type of iterator for vector<int> is "
<< "identified by the tag:\n "
<< typeid ( cati ).name( ) << endl;
cout << "The type of iterator for vector<char> is "
<< "identified by the tag:\n "
<< typeid ( catc ).name( ) << endl;
if ( typeid ( cati ) == typeid( catc ) )
cout << "The iterators are the same." << endl << endl;
else
cout << "The iterators are not the same." << endl << endl;
// But the list iterator is bidirectinal, not random access
cout << "The type of iterator for list<char> is "
<< "identified by the tag:\n "
<< typeid (catlc).name( ) << endl;
// cout << ( typeid ( vi.begin( ) ) == typeid( vc.begin( ) ) ) << endl;
if ( typeid ( vi.begin( ) ) == typeid( vc.begin( ) ) )
cout << "The iterators are the same." << endl;
else
cout << "The iterators are not the same." << endl;
// A random-access iterator is a bidirectional iterator.
cout << ( void* ) dynamic_cast< iterator_traits<list<char>:: iterator>
::iterator_category* > ( &catc ) << endl;
}
Vzorový výstup
Následující výstup je pro x 86.
The type of iterator for vector<int> is identified by the tag:
struct std::random_access_iterator_tag
The type of iterator for vector<char> is identified by the tag:
struct std::random_access_iterator_tag
The iterators are the same.
The type of iterator for list<char> is identified by the tag:
struct std::bidirectional_iterator_tag
The iterators are not the same.
0012FF3B
Požadavky
Záhlaví: <iterator>
Obor názvů: std
Viz také
Referenční dokumentace
bidirectional_iterator_tag Struct