如何创建用户定义大小但没有预定义值的向量?

Nap*_*tor 48 c++ vector

在C++中,可以创建一个预定义大小的数组,例如20 int myarray[20].但是,关于向量的在线文档并未显示初始化向量的相似方法:相反,应使用例如初始化向量std::vector<int> myvector (4, 100);.这给出了大小为4的向量,其中所有元素都是值100.

如何使用预定义的大小初始化向量而没有预定义的值,就像使用数组一样?

Cha*_*had 55

使用构造函数:

// create a vector with 20 integer elements
std::vector<int> arr(20);

for(int x = 0; x < 20; ++x)
   arr[x] = x;
Run Code Online (Sandbox Code Playgroud)

  • 我想补充一点,如果您使用向量作为类的成员数据,乍得答案中的初始化将引发编译器错误。您需要执行 ```std::vector&lt;type&gt; v_name = std::vector&lt;type&gt;(size)``` 或者定义 ```std::vector&lt;type&gt; v_name``` 并初始化只需使用 ```class() : v_name(size) {}``` 即可在构造函数中设置大小。 (5认同)
  • 好吧,我明白了,我认为 LLVM 对 c++ 使用 clang,所以这很奇怪。我认为现在向量应该或多或少地被视为数组的替代品,并且应该反映在语法中(这应该是你当时编写的内容)。奇怪的是我的编译器不允许这样做。不过,此评论的目的是为已写的内容添加扩展;因此, `std::vector&lt;int&gt; arr = std::vector&lt;int&gt; (20);` 对我来说效果很好,特别指出我想使用向量的构造函数。 (3认同)
  • @Chad 最好使用 `arr.at(x)=x` 来检查 out_of_bounds 错误。如果发生某些错误,`arr[x]=x` 将静默失败。 (2认同)
  • 如果您需要范围检查,则“at()”会进行检查,并会抛出越界错误的异常,而“[]”则不会进行检查。 (2认同)