【问题标题】:What is the difference between initiating a vector as vector < class > ( value ) and vector < class > [ value ]将向量初始化为 vector < class > ( value ) 和 vector < class > [ value ] 有什么区别
【发布时间】:2020-05-29 16:44:19
【问题描述】:

当我的初始化是:
vector &lt; pair &lt; int , int &gt; &gt; v ( 100 );
我无法执行:
vecini[x].push_back( make_pair( y , z ) ) ;
但是当我启动它时它会起作用:
vector &lt; pair &lt; int , int &gt; &gt; v [100];

【问题讨论】:

  • 你想要一个包含 100 个元素的向量还是 100 个空向量?
  • 第一个是100个(0,0)对的向量。第二个是一个包含 100 个空向量的数组。
  • 我想要一个包含 100 个空向量的数组,但我认为这两个初始化都做了同样的事情。谢谢!
  • 认为你想要一个包含 100 个空向量的数组,但这是个坏主意。而是从 100 个空向量对的 vector 开始。 std::vector&lt;std::vector&lt;std::pair&lt;int, int&gt;&gt;&gt; v(100);。最好的办法是定义有意义的命名类型,例如struct point { int x, int y }; 而不是 std::pair&lt;int, int&gt;

标签: c++ vector stl std


【解决方案1】:

您在这里混合了苹果和香蕉:向量初始化和 C 样式数组。

using type = vector<pair<int, int>>;
type x(100); // <- single vector with 100 elements in it
type y[100]; // <- array of 100 vectors, with 0 elements in each

【讨论】:

    【解决方案2】:

    向量>v(100);初始化一个包含 100 个元素的向量,其中每个元素都是对类型,所有值都初始化为 0

    向量>v[100];初始化一个包含 100 个元素的数组,其中每个元素都是类型对的向量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      • 2021-11-28
      • 1970-01-01
      • 2016-02-27
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多