我有一个带有vector<float>
成员的C ++类,它们在构造函数中初始化为由构造函数的一个参数确定的大小。
summingBuffer = vector<float>(requiredSize);
如何检查向量构造函数是否已成功分配所需空间?实例变量不是指针(它们应该是?),因此if (NULL==myVector)
不起作用。 vector
是否会在分配错误上抛出异常?之后检查.size()
怎么样?
谢谢...
答案 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
}
};