[英]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.