random_access_iterator_tag 구조체
임의 액세스 반복기를 나타내는 함수에 대한 iterator_category
반환 형식을 제공하는 클래스입니다.
구문
struct random_access_iterator_tag : public bidirectional_iterator_tag {};
설명
범주 태그 클래스는 알고리즘 선택을 위한 컴파일 태그로 사용됩니다. 템플릿 함수는 컴파일 시간에서 가장 효율적인 알고리즘을 사용할 수 있도록 해당 반복기 인수의 가장 구체적인 범주를 찾아야 합니다. Iterator
형식의 모든 반복기에 대해 iterator_traits
<Iterator
>::iterator_category는 반복기 동작을 설명하는 가장 구체적인 범주 태그로 정의되어야 합니다.
임의 액세스 반복기로<사용할 수 있는 개체를 설명하는 경우 Iter
반복기 Iter>::iterator_category 형식과 동일합니다.
예시
// 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;
}
샘플 출력
x86의 경우 다음과 같이 출력됩니다.
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
요구 사항
헤더:<반복기>
네임스페이스: std
참고 항목
bidirectional_iterator_tag 구조체
C++ 표준 라이브러리의 스레드 보안
C++ 표준 라이브러리 참조