如何获取C++中自定义固定大小fixVec的设定最大容量?
实现固定最大容量的C++向量
如果你想要一个自带最大尺寸限制的向量,你给出的这个模板结构体实现思路是可行的——通过继承std::vector并重写push_back方法来做容量校验:
template <typename T, size_t siz> struct fixVec : public std::vector<T> { void push_back(const T& d) { if (std::vector<T>::size() >= siz) throw std::bad_alloc(); std::vector<T>::push_back(d); } };
使用示例
你可以像这样实例化一个最大容量为1的fixVec,并结合其他类使用:
ClonableHeteroStore<ClonableTestClass, fixVec<ClonableTestClass*, 1>, MyException> t1;
测试验证
针对这个实例,第一个添加操作不会触发异常,这和你的测试预期一致:
EXPECT_NO_THROW(t1.add(new ClonableTestClass));
因为此时向量的当前尺寸是0,还没达到设定的最大容量1,所以push_back可以正常执行,不会抛出std::bad_alloc异常。
内容的提问来源于stack exchange,提问作者Malkalma
相关产品推荐
相关产品推荐

