BCS*_*BCS 4 c++ containers stl
是否有一个标准容器具有相同的通用API,vector<T>
但是通过直接默认构造填充新位置?
背景:
我有一个类型,不允许复制,但有一个默认的构造函数,我真正想做的是这样的:
vector<NoCopy> bag(some_size);
// use bag[i]'s
return; // bag & contents get correctly cleaned up.
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,因为它vector<T>(int)
是根据默认构造对象然后将其复制到每个新位置来实现的.
编辑:不是C++ 0xB(又名C++ 11)
一种选择是升级到符合C++ 11的标准库实现.
在C++ 11中,vector(size_type)
构造函数默认将N个元素构造到容器中.它既不复制也不移动任何元素.
Visual C++ 2010不支持此C++ 11功能; 我相信Visual C++ 11 Developer Preview确实支持它.我不知道libstdc ++的最新版本是否支持这个; 我怀疑libc ++会这样做.
归档时间: |
|
查看次数: |
279 次 |
最近记录: |