Ris*_*wal -1 c++ immutability immutablelist
如何在cpp中创建不可变列表?列表的引用及其数据应保持不变。
我不会在vector或任何其他容器上做包装器类(我知道与本文类似的方法)。
使用constexpr或进行此操作的最佳方法是什么const pointers?
只需将其声明为const,如下所示:
const std::list<int> constList = { 1, 2, 3 };
类似的方法constList.begin();将返回const_iterator和constList.push_back(3);不会编译。
将其地址分配给非const指针将不起作用:
std::list<int> *l = &constList; // does not compile
将引用传递给采用非常量引用的函数不起作用:
void a(std::list<int> &list) {}
int main()
{
    const std::list<int> mylist = { 1, 2, 3 };
    a(mylist); // does not compile
}
不修改列表不是解决方案。
创建一个非常量列表,完成构建后,将其移至const列表:
std::list<int> mylist = { 1, 2, 3 };
mylist.push_back(4);
const std::list<int> constList = std::move(mylist);
| 归档时间: | 
 | 
| 查看次数: | 95 次 | 
| 最近记录: |