首页 > 解决方案 > 在向量的向量上具有自动类型的 for 循环

问题描述

在新版本的 c++ 中,使用 auto 作为循环的类型和范围基础非常方便

// instead of
for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
}
// to do
for (auto vi: v) {
}

我该如何使用它vector<vector<int>>?当我尝试

for (const auto& vi: vvi) {

}

编译器抱怨:使用推导类型“const auto”声明变量“vi”需要初始化程序。

更新: 结果一切正常,我只是犯了一个愚蠢的错字并在变量名而不是类型之后加上'&' for (const auto vi&: vvi);我使用 & 来避免在循环的每次迭代中创建新变量。

标签: c++

解决方案


您可以使用 2 作为范围:

for (const auto& inner: vvi) { // auto is std::vector<int>
    for (auto e: inner) { // auto is int
        std::cout << e << " ";
    }
    std::cout << std::endl;
}

推荐阅读