|
|
1
3
实现这一点的唯一真正方法是在自定义分配器或向向量添加元素的函数中提供检查功能。
|
|
|
2
3
你为什么要用向量?向量的全部要点是在需要时动态扩展。 与其让一个类委托给向量,不如让一个类委托给一个简单数组。让您的push_back检查大小,并在需要时中止。 |
|
|
3
2
|
|
|
4
2
如果您在编译时知道大小,可以使用std::tr1::array(或 boost::array )这将是一个更好的选择。它保持一个固定的大小,并像std::vector一样检查访问。
在最后一种方法中,如果您可以知道向量创建时的最大大小,我建议您在封装类构造函数(或初始化函数)中保留(std::vector::reserve())向量的最大大小。这样,向量本身就不会有更多的内存操作(仅当向量元素构造函数/析构函数进行此类操作时)。然后,添加一个简单的断言来检查向量容量(std::vector::capacity())在类的所有函数的开始和结束时是否从未更改,这将帮助您确保它的内存不移动。 例如(假设DATA_MAX_SIZE是某个地方定义的默认最大大小):
或者类似的事情。。。 |
|
|
5
2
(我以前做过这个,但我花了一段时间来编写工作代码。) |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |