질문 1 reverse_iterator와 iterator는 벡터 클래스 템플릿에 정의된 두 가지 반복자 유형입니다. 구현은 다음과 같은 다양한 클래스일 수 있습니다.
으아악
reverse_iterator의 반복 방향은 iterator의 반복 방향과 반대입니다. 즉, r1과 r2가 동일한 요소를 가리키는 경우 r1+1 및 r2-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_iterator와 iterator는 벡터 클래스 템플릿에 정의된 두 가지 반복자 유형입니다. 구현은 다음과 같은 다양한 클래스일 수 있습니다.
reverse_iterator
의 반복 방향은iterator
의 반복 방향과 반대입니다. 즉, r1과 r2가 동일한 요소를 가리키는 경우r1+1
및r2-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;
숫자값 두 개는 무엇인가요? .
reverse_iterator
및iterator
은 반복자이며 본질적으로 두 개의 클래스 템플릿은 클래스 내부에서 함수의 서로 다른 세부 사항을 다시 구현하여 서로 다른 기능을 달성하지만 외부 인터페이스는 동일합니다
은
out_iter
객체를 인스턴스화하고 유형은ostream_iterator<int,char>
이며 생성자에 전달된 매개변수는cout
및" "
"cout은 int에 값을 할당할 수 있습니다"라는 문장의 의미가 불분명합니다