title: Is the initialization order of the vector elements guaranteed by the standard?
body: <p>To fill a <code>std::vector&lt;struct_name&gt;</code> from <code>std::cin</code>, I usually write as following code:</p>
  <pre><code>struct point{
      int x, y;
  };
  
  int main()
  {
     std::size_t n;
     std::cin&gt;&gt;n; 
     std::vector&lt;point&gt; vec(n);
      for (auto&amp; p:vec) 
          std::cin&gt;&gt;p.x&gt;&gt;p.y;
     //...
  }
  </code></pre>
  <p>But today I found out another way to do it with default constructor:</p>
  <pre><code>struct point{
  int x, y;
     point(){
        std::cin&gt;&gt;x&gt;&gt;y;
     }
  };
  
  int main()
  {
      std::size_t n;
      std::cin&gt;&gt;n; 
      std::vector&lt;point&gt; vec(n);
      //...
  }
  </code></pre>
  <p><strong>Questions</strong>:</p>
  <ol>
  <li>Is the initialization order of the vector elements guaranteed by the standard(0,1,2,n-1...)?</li>
  <li>(If answer of previous question is true) Is really the second variant has twice effective?</li>
  </ol>
  <p><sub>I am interested in behavior according to the C++11(and newer) standard</sub></p>