저는 조금 떨어져서 오래된 멜론을 털어 내고 C++로 돌아 왔습니다.C++ (stl) 대 Java의 반복자는 개념적으로 차이가 있습니까?
Java Iterator는 hasNext(), next() 및 remove() 메소드가있는 컨테이너에 대한 인터페이스입니다. hasNext()가 있으면 에 컨테이너가 통과하는 한계 인이라는 개념이 있음을 의미합니다. C++ 표준 템플릿 라이브러리에서
//with an Iterator
Iterator<String> iter = trees.iterator();
while (iter.hasNext())
{
System.out.println(iter.next());
}
는, 반복자는 == 데이터 형식 또는 클래스 지지대 연산자 ++ 및 연산자를 표현하기 위해 보이지만
을 가지고 다음에 진행하기 전에 너무 비교가 필요합니다 내장 제한의 개념이 없습니다 목. 이 제한은 사용자가 두 개의 반복자를 비교하는 경우 보통의 경우 두 번째 반복자가 컨테이너 끝임을 비교해야합니다.
vector<int> vec;
vector<int>::iterator iter;
// Add some elements to vector
v.push_back(1);
v.push_back(4);
v.push_back(8);
for(iter= v.begin(); iter != v.end(); iter++)
{
cout << *i << " "; //Should output 1 4 8
}
흥미로운 부분은 C++에서 포인터는 배열에 대한 반복자입니다. STL은 기존의 것을 가져 와서 컨벤션을 구축했습니다.
거기에 더 이상 미묘한 미묘함이 있습니까?
당신은 꽤 많이 말했습니다. Java에서는 range와 iterator의 개념이 거의 병합되었습니다. C++에서 반복자는 그것이 속한 요소의 범위에 대한 개념이 없으며 실제로 여러 범위의 일부가 될 수 있습니다 (끝이 시작되고 끝이 1, 끝이 시작되고 끝이 3, 끝이 시작됨 + 6 등등.) – jalf
"... 오래된 멜론에서 먼지를 뽑으려고"- 화려한 문구. – kevinarpe