(예 vector
, deque
, map
), 나는C++ 스트림 반복자 I 컨테이너 유형, C++에서 이해 것과
vector<int>::iterator
map<int,int>::const_iterator
같은 구문을 사용하여 반복자 유형을 얻을 그리고 실제 반복자를 얻을 수 있습니다 그러나
stuff.begin()
같은 방법을 통해 첫 번째 요소로 흐름 (예 ifstream
)의 경우, 인터페이스는 약간 다른 것으로 보인다; 내가 이해하는 바로는
streambuf_iterator<char>(fin)
stream_iterator<int>(fin)
를 작성하여 반복자를 얻을 수
ifstream
어떤 방법
begin<int>
또는
beginbuf
내가 처음
vector
내 경험에서 기대했던 방법이 없습니다.
기술적 인 측면과 역사적 측면이 다른 이유는 무엇입니까? istream
반복자가 vector
및 그 ilk와 비슷한 동작을하는 경우 새로운 코더가 더 직각이되고 더 쉽지 않을까요?
대부분 역사적입니다. 반복자가 등장하기 몇 년 전부터 iostream이 사용되어 왔습니다. 실용적인 문제가 있습니다. 벡터가 한 유형에 대해 인스턴스화되므로 iterator의 유형이됩니다. 스트림의 경우 임의 유형의 객체를 스트림이 보유 할 수 있으므로 읽기/쓰기 계획을 직접 지정해야합니다. –