大佬教程收集整理的这篇文章主要介绍了c – STL容器如何复制对象?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
void push_BACk ( const T& x );
我很惊讶地看到它将该项目作为参考.我写了一个示例程序来看看它是如何工作的.
struct Foo { Foo() { std::cout << "Inside Foo constructor" << std::endl; } Foo(const Foo& f) { std::cout << "inside copy constructor" << std::endl; } }; Foo f; std::vector<Foo> foos; foos.push_BACk(f);
这将复制对象,我可以看到它正在调用copy-constructor.
我的问题是,当push_BACk将项目作为引用时,如何调用copy-constructor?还是我在这里遗漏的东西?
有什么想法吗..?
调用复制构造函数T :: T(T const&)来就地创建副本.这样的东西(简化):
template<T> void vector<T>::push_BACk(T const &item) { // resize if necessary new (&d_arraY[d_size++]) T(item); }
请注意,T必须有一个复制构造函数才能工作.默认情况下(如果你什么都不做),它会免费获得一个.如果你明确定义它,它必须是公开的,用于向量< T>上班.
Here’s how GNU’s libstdc++ does it,但我怀疑这将是非常有启发性的.有一个分配器(向量的第二个模板参数)使其不那么简单.
以上是大佬教程为你收集整理的c – STL容器如何复制对象?全部内容,希望文章能够帮你解决c – STL容器如何复制对象?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。