问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赋值?
PHPz2017-04-18 10:49:50
질문 1
reverse_iterator와 iterator는 벡터 클래스 템플릿에 정의된 두 가지 반복자 유형입니다. 구현은 다음과 같은 다양한 클래스일 수 있습니다.
reverse_iterator
의 반복 방향은 iterator
의 반복 방향과 반대입니다. 즉, r1과 r2가 동일한 요소를 가리키는 경우 r1+1
및 r2-1
는 동일한 요소를 가리킵니다(유효한 경우 각각 operator+
및 operator-
를 오버로드합니다).
반복 방향은 다양한 연산자 구현을 통해 달성됩니다. 반복자가 포인터에 의해 내부적으로 구현되는 경우 reverse_iterator의 operator++
구현은 포인터를 감소시킬 수 있고 반복자의 operator++
구현은 포인터를 증가시킬 수 있습니다.
질문 2ostream_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;
PHP中文网2017-04-18 10:49:50
숫자값 두 개는 무엇인가요? . reverse_iterator
및 iterator
은 반복자이며 본질적으로 두 개의 클래스 템플릿
은 클래스 내부에서 함수의 서로 다른 세부 사항을 다시 구현하여 서로 다른 기능을 달성하지만 외부 인터페이스는 동일합니다
은 out_iter
객체를 인스턴스화하고 유형은 ostream_iterator<int,char>
이며 생성자에 전달된 매개변수는 cout
및 " "
"cout은 int에 값을 할당할 수 있습니다"라는 문장의 의미가 불분명합니다