C++11 多维数组迭代
C++11 Multidimensional Array Iteration
为了遍历 C 风格的多维数组,我们有
int arr[3][4];
for (int row = 0; row < 3; row++){
for (int col = 0; col < 4; col++){
...
}
}
但是如何使用迭代器迭代以下内容:
array<array<int, 4>, 3> arr;
使用以下迭代器?
array<array<int, 4>, 3>::iterator it1;
array<int, 4>::iterator it2;
如果您需要使用迭代器,请照常使用它们:
for (auto itOuter = arr.begin(); itOuter != arr.end(); ++itOuter) {
for (auto itInner = itOuter->begin(); itInner != itOuter->end(); ++itInner) {
// use *itInner as appropriate
}
}
您也可以使用基于范围的 for
循环,如果它们适合您的话:
for (auto &inner : arr) {
for (int &elem : inner) {
// use elem as appropriate
}
}
像往常一样:
array<array<int, 4>, 3> arr;
for(array<array<int, 4>, 3>::iterator it1 = arr.begin(); it1 != arr.end(); ++it1)
for(array<int, 4>::iterator it2 = it1->begin(); it2 != it1->end(); ++it2)
(*it2) = 0;
但是使用短的 c++11 基于范围的 for 循环会更容易
array<array<int, 4>, 3> arr;
for(auto &it1 : arr)
for(auto &it2 : it1)
it2 = 0;
为了遍历 C 风格的多维数组,我们有
int arr[3][4];
for (int row = 0; row < 3; row++){
for (int col = 0; col < 4; col++){
...
}
}
但是如何使用迭代器迭代以下内容:
array<array<int, 4>, 3> arr;
使用以下迭代器?
array<array<int, 4>, 3>::iterator it1;
array<int, 4>::iterator it2;
如果您需要使用迭代器,请照常使用它们:
for (auto itOuter = arr.begin(); itOuter != arr.end(); ++itOuter) {
for (auto itInner = itOuter->begin(); itInner != itOuter->end(); ++itInner) {
// use *itInner as appropriate
}
}
您也可以使用基于范围的 for
循环,如果它们适合您的话:
for (auto &inner : arr) {
for (int &elem : inner) {
// use elem as appropriate
}
}
像往常一样:
array<array<int, 4>, 3> arr;
for(array<array<int, 4>, 3>::iterator it1 = arr.begin(); it1 != arr.end(); ++it1)
for(array<int, 4>::iterator it2 = it1->begin(); it2 != it1->end(); ++it2)
(*it2) = 0;
但是使用短的 c++11 基于范围的 for 循环会更容易
array<array<int, 4>, 3> arr;
for(auto &it1 : arr)
for(auto &it2 : it1)
it2 = 0;