컨테이너 세트에 액세스하는 일반적인 방법을 찾으려고합니다. 다른 사용자 지정 목록 외에 표준 벡터와 목록이 있습니다.일반 이터레이터
사용자 지정 목록은 반복기를 정의합니다.
class Iterator: public std::iterator<std::forward_iterator_tag, T> {
// ...
}
Iterator begin() {
return (Iterator(root));
}
Iterator end() {
return (Iterator(NULL));
}
적절한 연산자가 오버로드됩니다.
이상적으로, 나는 이것을하고 싶다;
class Foo {
public:
Foo() {
std::list<int> x;
std::vector<int> y;
custom_list<int> z;
iter = x.begin(); // OR
iter = y.begin(); // OR
iter = z.begin();
// ...
};
private:
std::iterator<int> iter;
};
분명히 이들은 서로 다른 유형의 모든 반복자입니다. 그러나 모든 컨테이너가 같은 유형이라고 가정 할 수 있습니다.
이 문제를 해결하는 우아한 방법이 있습니까?
위의 두 번째 링크 저자 인 Thomas Becker는 더 긴 기사를 보유하고 있습니다. http://www.artima.com/cppsource/type_erasure.html – Adrian
@Adrian - 그 기사는 훌륭했습니다. D 공유 해 주셔서 감사합니다. ! – nevelis