【发布时间】:2014-06-15 20:25:38
【问题描述】:
我对 C++11 很陌生,迭代器和统一初始化有问题,我不明白。
考虑下面的例子,它不能编译:
#include <iostream>
#include <vector>
int main() {
std::vector<int> t{1, 2, 3, 4, 5};
auto iter{t.begin()};
for (; iter != t.end(); ++iter) {
std::cout << *iter;
}
return 0;
}
在第 6 行中,使用统一初始化对向量进行了初始化。在第 7 行中,我尝试对迭代器执行相同的操作。这没用。将第 7 行更改为 auto iter = t.begin() 即可。我知道我可以为此简单地使用“基于范围”,但问题是:为什么统一初始化不适用于迭代器,但适用于基本类型,例如 int i{0};?
【问题讨论】:
-
顺便说一句
auto iter{t.begin()};很好,是后来导致问题的原因
标签: c++ c++11 iterator uniform-initialization