我寻找提供不变性的STL容器类(一旦创建了容器,就不允许在容器上执行CRUD。它都是只读的)。
当然,我可以继承STL容器类并创建一个不可变的版本,然后将所有CRUD方法私有化,只保留以可变容器作为输入的构造函数。例如,
template<T>
public class ImmutableVector<T>(): public vecotr<T>()
{
private void clear();
...
}
但这似乎有很多工作要做。我的问题是:世界上有STL不可变库吗?
//a class template to do something to STL container
template<typename T/*should be a STL container*/,typename Ele/*the type of element*/>
struct foo{
T a_container_with_an_element(){
T con;
Ele e;
con.push_back(++++e);
return con;
}
正如您所看到的,将元素的类型放入模板的参数中是非常愚蠢的,因为它已经包含在容器的类型中。
说我有一个有标准容器的类:
class Library{
std::vector<Book> books;
public:
void putOnFire(){
books.clear();
}
};
清除容器的通常方法是“清除”,但是大多数代码不符合"STL兼容“,因此许多容器(由第三方)可能没有”清除“方法。但是,如果他们有移动语义,我可以只使用std::move对吗?
void putOnFire(){
auto p = std::move(books); //books cleared when p out of sco
这些天我正在学习STL,我想知道STL容器是否以参考方式返回。
例如:
vector.first();
map[key];
*vector.begin();
Or any possible return that ends with element (or value type) of container
例如:
std::vector<int> elements;
elements.push_back(20);
elements[0]=60; // this will also change the value
elements.front() = 23; // even the