码迷,mamicode.com
首页 > 其他好文 > 详细

STL坑汇总

时间:2014-05-21 20:36:55      阅读:408      评论:0      收藏:0      [点我收藏+]

标签:c   a   type   new   amp   it   

1.

Q:vector的push_back()方法到底做了些什么?

   为什么声明写的是void push_back (const value_type& val);

A:的确,乍一看,似乎push_back方法添加了一个引用。哦,天啊,如果这个引用对象被析构了,那岂不是要出错。

官方文档是这样写的

Adds a new element at the end of the vector, after its current last element. The content of val is copied (or moved) to the new element.

也就是说,在push_back里面实际上做了两件事儿,一是根据引用的对象复制构造新的对象,二是将此对象添加到尾部。而是不是直接将引用加入尾部。

那么,如果不用引用的话呢?这将是值传递。会做三件事,一是构建一个临时对象,该对象为实参的一个副本,二是根据此临时对象复制构造新的对象,三是新构造的对象加到尾部。

从而相比引用多了一次构造对象。

 

STL坑汇总,布布扣,bubuko.com

STL坑汇总

标签:c   a   type   new   amp   it   

原文地址:http://www.cnblogs.com/ShaneZhang/p/3739582.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!