title: What's the STL way to fill a 2-dimensional std::array without iteration?
body: <p>I have a 2-dimensional <code>std::array</code> of <code>std::array</code>s and I want to fill it with 0s. The only solution to this that I found is to use a pointer to the first element and <code>sizeof</code>, like so:</p>
  
  <pre><code>std::fill(&amp;arr2d[0][0], &amp;arr2d[0][0] + sizeof(arr2d), 0);
  </code></pre>
  
  <p>Although it works, it doesn't line up with other methods I've found for filling 1D <code>std::array</code>s without pointer logic, like the following two:</p>
  
  <pre><code>std::fill(arr1d.begin(), arr1d.end(), 0);
  arr1d.fill(0);
  </code></pre>
  
  <p>I could iterate over each array, like so:</p>
  
  <pre><code>for (auto&amp; it : arr2d) {
      it.fill(0);
  }
  </code></pre>
  
  <p>but it seems it would be much more efficient to fill the array in one pass. Is there a cleaner method for 2D arrays, or am I stuck with C-style pointer logic?</p>