Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 限制c+中向量的增长+;_C++_Vector - Fatal编程技术网

C++ 限制c+中向量的增长+;

C++ 限制c+中向量的增长+;,c++,vector,C++,Vector,是否可以限制向量。max_size()以限制向量的增长 如果没有,是否具有监视向量.capacity()的功能,以确保它不会超过确定的数量,这是一个可行的替代品?实际上不是。但是您可以定义自己的vector子类(或者创建自己的全新vector实现),如果您真的愿意,这将允许强制执行此要求 差不多。您可以编写一个自定义分配器,并在std::vector(vector的第二个模板参数)中使用它。分配器需要满足以下条件。然而,正确地做到这一点并不简单。你的vector不会忽略push_back在达到最

是否可以限制
向量。max_size()
以限制向量的增长


如果没有,是否具有监视向量.capacity()的功能,以确保它不会超过确定的数量,这是一个可行的替代品?

实际上不是。但是您可以定义自己的vector子类(或者创建自己的全新vector实现),如果您真的愿意,这将允许强制执行此要求

差不多。您可以编写一个自定义分配器,并在
std::vector
(vector的第二个模板参数)中使用它。分配器需要满足以下条件。然而,正确地做到这一点并不简单。你的
vector
不会忽略
push_back
在达到最大大小后,它会抛出。

继承
std::vector
是一个糟糕的建议。不确定为什么会如此糟糕,但他可以完全从头开始实现它。这是一个糟糕的主意,因为
std::vector
不是设计用来继承的
max_size
不是虚拟的,析构函数也不是虚拟的。通过
std::vector
接口进行的任何访问都会产生意外的结果。您可以编写一个满足
vector
要求的新容器,并使用
std::vector
在内部实现。在一次调用
推回
插入
分配
操作员=
并超出预期最大容量?截断扔?