问题描述
我正在编写一个自定义容器模板类,该容器可以在stl中使用许多(如果不是全部)容器,可以使用指定的分配器类型。
要实现范围插入功能,我需要将容器中的某些元素向前移动多个空间,在这些空间中,内存仍未初始化。为此,我想使用std::uninitialized_move()
的某些(不存在)版本,该版本在容器中使用分配器。
另一个选择是在for循环中使用分配器对对象进行移动构造,并在发生异常的情况下销毁构造的对象。基本上,这是通过附加功能重新实现std::uninitialized_move()
。
我的编译器(GCC)的标准库实现完全具有我需要的功能(std::__uninitialized_move_a()
,std::__uninitialized_copy_a()
等),实际上已用于std容器的实现中,但是我认为这些是特定于编译器的。
我应该使用此功能(可移植性)吗?还是还有其他更实用的选择? 也许我在标准库中缺少某些东西。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)