在新版本的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)类型;我使用&来避免在循环的每次迭代中创建新变量。

最佳答案

您可以将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;
}

关于c++ - 在 vector 的 vector 上自动键入的for循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61425187/

10-13 23:50