zoukankan      html  css  js  c++  java
  • C++中emplace_back中的完美转发是什么

    1.源代码

    push_back()

    #if __cplusplus >= 201103L
          void
          push_back(value_type&& __x)
          { emplace_back(std::move(__x)); }

    其中传入参数是右值?如果是右值的话就直接调用emplace_back,并且参数是右值。

    也有下面传入引用的版本:

          void
          push_back(const value_type& __x)
          {
        if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
          {
            _GLIBCXX_ASAN_ANNOTATE_GROW(1);
            _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
                         __x);
            ++this->_M_impl._M_finish;
            _GLIBCXX_ASAN_ANNOTATE_GREW(1);
          }
        else
          _M_realloc_insert(end(), __x);
          }

    emplace_back的实现:

          vector<_Tp, _Alloc>::
          emplace_back(_Args&&... __args)
          {
        if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
          {
            _GLIBCXX_ASAN_ANNOTATE_GROW(1);
            _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
                         std::forward<_Args>(__args)...);
            ++this->_M_impl._M_finish;
            _GLIBCXX_ASAN_ANNOTATE_GREW(1);
          }
        else
          _M_realloc_insert(end(), std::forward<_Args>(__args)...);

    传入参数是右值,进行了forward函数进行完美转发?

    https://www.cnblogs.com/qicosmos/p/3376241.html,这个之后再深入学习。

  • 相关阅读:
    用自己的话描述wcf中的传输安全与消息安全的区别(一)
    web服务器( nginx )及请求代理
    windows系统安装
    邮箱使用
    常见dos命令总结
    前端技术碰到的陌生单词
    前端工作思考
    table标签详解
    PC 端响应式布局
    HTML标签嵌套规则
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/14110748.html
Copyright © 2011-2022 走看看