我有一个模板模板参数这个简单的函数。这意味着要采取一个STL容器,智能PTR转换为正常的PTR(这是一个C++ 03的项目,但我也有兴趣在回答对C++ 11):模板模板类,调用一个函数,如果它存在
template <template <typename _T, typename = std::allocator<_T> > class Container>
static Container<T*> GetRawPtrContainer(const Container<SmartPtr<T> >& input_container)
{
Container<T*> container;
for(typename Container<SmartPtr<T> >::const_iterator it = input_container.begin();
it != input_container.end();
it++)
{
container.push_back(it->ptr);
}
return container;
}
这是类SmartPtr<T>
的静态成员函数。
您在这里看到的所有这一切都是从input_container
到input_container
的所有元素都返回。
您可能已经注意到,如果输入std::vector
,那么就用O(1)
插入性能问题,而这是罚款std::list
和std::deque
。所以我想要做的就是调用这个循环之前,如果有可能(在编译时决定):
container.reserve(input_container.size());
我怎么能这样做?
对不起,你可以展示一个例子,其中的C + + 03的例子会为我提出的问题工作? –
就像这样:https://pastebin.com/c4NARK3e – ACB
你可以添加到答案?我公司的防火墙阻止了pastebin。 –