문제
내가 찾으려고 노력하는 일반적인 방법에 액세스하는 설정의 용기입니다.나는 표준 벡터와 목록 이외에 다른 사용자 정의 목록입니다.
사용자 정의 목록을 정의 반복기;
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;
};
하지만 분명 이들은 모두 반복기의 다른 유형이 있습니다.나는 할 수 있다고 가정한 모든 컨테이너가 동일한 형식의 그러나입니다.
있는 우아한 방법으로 이 문제를 해결하기 위해?
해결책
다른 팁
보다 더 늦게 없...
최신의 문제 C-Vu 설정하고 무엇을 생각에 그것:그건 바로,반복기지 정확히 당신이 무엇을 원했다.
불행하게도 당신의 일원이 되고 ACCU 잡지를 볼(는 문서를 참조하는 하중 초과 문서 2000 년부터 다윗의 링크).하지만 순대 가격이 해 당신은 좋은 잡지를 읽고,컨퍼런스 및 사용자 그룹이 있습니다.회원이 되시면 당신이 볼 수 있습니다 PDF 의 뒤쪽의 문제도 무엇을 기다리고 있는?
의 경우도록주의하고 당신이 무엇을 부탁드립니다.이 any_iterator 클래스를 참조하십시오에는 무제한을 설정 반복기의 형식입니다.당신은 세 가지를 가지고,당신이 알고있습니다.지 확인해야 할 수 있습니다 추가 네 번째 유형은 미래에,그러나 그래서 어떤 경우는 O(1)추가 줄의 코드?
의 큰 장점 폐쇄 설정의 가능한 포함된 종류는 당신이에 대한 상 sizeof()을 의미하는,당신은 피할 수 있습니다 힙 및 간접 가져온다.기본적으로,그 물건의 모든 부스트::변화 apply_visitor.