如何在C ++中测试向量初始化成功/失败

时间:2012-02-22 11:14:17

标签: c++ stl error-handling initialization

我有一个带有vector<float>成员的C ++类,它们在构造函数中初始化为由构造函数的一个参数确定的大小。

summingBuffer = vector<float>(requiredSize);

如何检查向量构造函数是否已成功分配所需空间?实例变量不是指针(它们应该是?),因此if (NULL==myVector)不起作用。 vector是否会在分配错误上抛出异常?之后检查.size()怎么样?

谢谢...

2 个答案:

答案 0 :(得分:4)

默认分配器会在失败的分配上抛出std::bad_alloc,就像new T一样。所以,不,不需要进行尺寸检查。这不是C.

答案 1 :(得分:1)

如果向量构造函数无法分配足够的存储空间而不需要额外的检查,它将引发bad_alloc

如果你不是绝对需要它们,那么使用指针不是一个好主意。

此外,看起来您可以直接初始化向量,而不是通过使用构造函数的初始化列表来执行此操作。类似的东西:

struct foo {
  std::vector<float> things;

  foo(int vsize) : things(vsize) {
    // rest of constructor code
  }
};