基于多维 std::array 的范围
Range based for with multi-dimensional std::array
试着四处寻找这个,但只找到了使用内置数组而不是 std::array obj 的示例。
// array arr of size 5
array< array<int, 10>, 10> arr = { 0 };
srand((unsigned)time(0));
// initialize elements
for ()
{
for()
{
item = rand() % 100 + 1;
}
}
尝试将二维数组 obj 初始化为随机值的基本示例。我不确定在 for 循环
的 () 之间放什么
auto&
在这里就派上用场了。好吧,第一个 range-for 循环将引用数组中的每个数组。第二个引用最内层数组中的每个元素。喜欢:
// initialize elements
for (auto& inner : arr)
{
for(auto& item : inner)
{
item = rand() % 100 + 1;
}
}
#include <array>
using namespace std;
// array arr of size 5
array< array<int, 10>, 10> arr;
int main() {
// initialize elements
for (auto & outer_array : arr)
{
for(auto & inner_array : outer_array)
{
}
}
}
除了使用基于范围的 for 循环,您甚至可以使用函数
std::for_each(arr.begin(), arr.end(), [](array<int, 10> const& inner) {
auto generator = []() { return rand() % 100 + 1; };
std::generate(inner.begin(), inner.end(), generator);
}
for(int i = 0; i < arr.size() ; i++)
{
for(int j = 0; j < arr[i].size() ; j++)
{
arr[i][j] = rand() % 100 + 1;
}
}
试着四处寻找这个,但只找到了使用内置数组而不是 std::array obj 的示例。
// array arr of size 5
array< array<int, 10>, 10> arr = { 0 };
srand((unsigned)time(0));
// initialize elements
for ()
{
for()
{
item = rand() % 100 + 1;
}
}
尝试将二维数组 obj 初始化为随机值的基本示例。我不确定在 for 循环
的 () 之间放什么auto&
在这里就派上用场了。好吧,第一个 range-for 循环将引用数组中的每个数组。第二个引用最内层数组中的每个元素。喜欢:
// initialize elements
for (auto& inner : arr)
{
for(auto& item : inner)
{
item = rand() % 100 + 1;
}
}
#include <array>
using namespace std;
// array arr of size 5
array< array<int, 10>, 10> arr;
int main() {
// initialize elements
for (auto & outer_array : arr)
{
for(auto & inner_array : outer_array)
{
}
}
}
除了使用基于范围的 for 循环,您甚至可以使用函数
std::for_each(arr.begin(), arr.end(), [](array<int, 10> const& inner) {
auto generator = []() { return rand() % 100 + 1; };
std::generate(inner.begin(), inner.end(), generator);
}
for(int i = 0; i < arr.size() ; i++)
{
for(int j = 0; j < arr[i].size() ; j++)
{
arr[i][j] = rand() % 100 + 1;
}
}