zoukankan      html  css  js  c++  java
  • STL坑汇总

    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里面实际上做了两件事儿,一是根据引用的对象复制构造新的对象,二是将此对象添加到尾部。而是不是直接将引用加入尾部。

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

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

  • 相关阅读:
    hbase
    spark-streaming
    spark-Scala
    经典台词二
    星爷电影经典台词一
    Hadoop第一阶段总结
    测试2
    POI 表格数据导出
    GC垃圾回收机制
    Java常见的200道面试题
  • 原文地址:https://www.cnblogs.com/ShaneZhang/p/3739582.html
Copyright © 2011-2022 走看看