是否有不可变的STL容器类?

Ric*_*ang 1 c++ stl c++11

我寻找一个提供不变性的STL容器类(一旦创建容器,就不允许在容器上进行CRUD.它都是只读的).

当然,我可以继承STL容器类并创建一个不可变版本然后将所有CRUD方法私有化,并且只保留将可变容器作为输入的构造函数.例如,

template<T>
public class ImmutableVector<T>(): public vecotr<T>()
{
    private void clear();

 ...
 }
Run Code Online (Sandbox Code Playgroud)

但这似乎很多工作.我的问题是:世界上有没有STL不可变库?

Bas*_*tch 12

你可以使用一个const容器,例如a const std::vector<int>.很可能你会在初始化和填充时使用一个可变容器,然后再使用const_cast- 它(或传输它)作为一个const容器,更可能是一个const容器引用(例如传递const std::vector<int> &vi给一些函数).