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

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

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

  • 相关阅读:
    JavaScript进阶-BOM和DOM
    JavaScript基础
    CSS2-属性
    CSS1-选择器
    HTML-常用标签
    判断回文
    课堂作业
    动手动脑
    原码反码补码
    Java第一次考试作业
  • 原文地址:https://www.cnblogs.com/ShaneZhang/p/3739582.html
Copyright © 2011-2022 走看看