簡體   English   中英

自定義迭代器范圍函數無效輸出

[英]Custom iterator range function invalid output

我想實現range函數來遍歷容器

template<class IterT>
struct iteratorRange {
    IterT begin_;
    IterT end_;

    IterT begin() {
        return begin_;
    }

    IterT end() {
        return end_;
    }
};

template<class T>
iteratorRange<typename vector<T>::iterator>Head(vector<T> v, size_t step) {
    return {begin(v), next(begin(v), min(step, v.size()))};
}

int main() {
   vector<int> v {1, 2, 3, 4, 5, 6, 7};
   for (int& i : Head(v, 4)) {
       cout << i  << ' '; 
   }
}

我期望

1 2 3 4

但是收到了

1103219 1109239 3 4

錯誤是什么?

template<class T>
iteratorRange<typename vector<T>::iterator>Head(vector<T>& v, size_t step) {
    return {begin(v), next(begin(v), min(step, v.size()))};
}

而不是 Head 取向量 v 的值,它應該取一個引用。 這可以解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM