基于多维std :: array的范围

时间:2017-08-23 02:56:57

标签: c++ stdarray

试着四处寻找,但只找到了使用内置数组而不是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;
    }
}

尝试将2D数组obj初始化为随机值的基本示例。我不知道在for循环的()之间放什么

4 个答案:

答案 0 :(得分:4)

auto&在这里派上用场。好吧,第一个range-for循环将接受对数组中每个数组的引用。第二个接受对最内层数组中每个元素的引用。像:

// initialize elements
for (auto& inner : arr)
{
    for(auto& item : inner)
    {
        item = rand() % 100 + 1;
    }
}

答案 1 :(得分:2)

而不是使用基于范围的循环,你甚至可以使用函数

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);
}

答案 2 :(得分:1)

DateTime.Now

直播:https://godbolt.org/g/6eLgBk

答案 3 :(得分:0)

for(int i = 0; i < arr.size() ; i++)
{
   for(int j = 0; j < arr[i].size() ; j++)
   {
        arr[i][j] = rand() % 100 + 1;
   }
}