我对 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};
?