문제

내가 찾으려고 노력하는 일반적인 방법에 액세스하는 설정의 용기입니다.나는 표준 벡터와 목록 이외에 다른 사용자 정의 목록입니다.

사용자 정의 목록을 정의 반복기;

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top