java - C++ STL迭代器声明的iterator和reverse_iterator实质区别?是不同数值吗?
PHP中文网
PHP中文网 2017-04-18 10:47:50
0
2
817

问1:Vector<int>::reverse_iterator r1和Vector<int>::iterator r2。
r1和r2作用是截然不同的,这个:reverse_iterator和iterator实质是不同数值吗,为什么会有这个作用?

问2:ostream_iterator<int,char>out_iter(cout," ");括号(cout," ")是什么意思,这是个构造函数?为什么cout能给int赋值?

PHP中文网
PHP中文网

认证0级讲师

모든 응답(2)
PHPzhong

질문 1
reverse_iterator와 iterator는 벡터 클래스 템플릿에 정의된 두 가지 반복자 유형입니다. 구현은 다음과 같은 다양한 클래스일 수 있습니다.

으아악

reverse_iterator의 반복 방향은 iterator의 반복 방향과 반대입니다. 즉, r1과 r2가 동일한 요소를 가리키는 경우 r1+1r2-1는 동일한 요소를 가리킵니다(유효한 경우 각각 operator+operator-를 오버로드합니다).

반복 방향은 다양한 연산자 구현을 통해 달성됩니다. 반복자가 포인터에 의해 내부적으로 구현되는 경우 reverse_iterator의 operator++ 구현은 포인터를 감소시킬 수 있고 반복자의 operator++ 구현은 포인터를 증가시킬 수 있습니다.

질문 2
ostream_iterator<int, char> out_iter(cout, " ");는 변수를 선언하고 정의하며, 변수를 직접 초기화하는 내용입니다. (cout, " ")은 실제 매개변수 목록입니다. 컴파일러는 이 매개변수 목록을 기반으로 생성자를 선택하고 이러한 매개변수를 생성자에 "전달"하려고 시도합니다.

표준에 따라 cout은 int에 값을 할당할 수 없습니다. 관련 코드를 제공하세요. 그러나 cout은 bool(c++11 이후) 또는 void *(c++11 이전) 유형으로 변환될 수 있습니다. 이는 cout 유형이 basic_ios의 인스턴스를 상속하고, 인스턴스를 인스턴스화하는 데 사용되는 basic_ios 클래스 템플릿이 관련 변환 연산자를 정의하기 때문입니다. 즉 bool x = std::cout;

洪涛
  1. 숫자값 두 개는 무엇인가요? . reverse_iteratoriterator은 반복자이며 본질적으로 두 개의 클래스 템플릿
    은 클래스 내부에서 함수의 서로 다른 세부 사항을 다시 구현하여 서로 다른 기능을 달성하지만 외부 인터페이스는 동일합니다

  2. out_iter 객체를 인스턴스화하고 유형은 ostream_iterator<int,char>이며 생성자에 전달된 매개변수는 cout" "

  3. 입니다.

"cout은 int에 값을 할당할 수 있습니다"라는 문장의 의미가 불분명합니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿