当前位置: 首页 > wzjs >正文

网页制作免费的素材网站wordpress编辑模板插件

网页制作免费的素材网站,wordpress编辑模板插件,网站中间内容做多大尺寸的,哪里可以免费设计装修效果图标题:[C开发经验总结]何时用push?/何时用emplace? 水墨不写bug 文章目录 一、push与emplace辨析1. push 方法2. emplace 方法3. 注意事项 二、全文总结: 一、push与emplace辨析 1. push 方法 适用场景: 当你已经有一…

标题:[C++开发经验总结]何时用push?/何时用emplace?
@水墨不写bug

在这里插入图片描述


文章目录

  • 一、push与emplace辨析
    • 1. `push` 方法
    • 2. `emplace` 方法
    • 3. 注意事项
  • 二、全文总结:


一、push与emplace辨析

1. push 方法

  • 适用场景
    • 当你已经有一个对象实例,并且你想把它添加到容器中时使用。
  • 语法
    • push_back:用于在容器末尾添加元素。
    • push_front:用于在容器开头添加元素(适用于std::dequestd::list)。
  • 示例
      string data = "data";vec.push_back(data);      // 保留原对象,拷贝到容器vec.push_back(std::move(data)); // 转移资源到容器
    

2. emplace 方法

  • 适用场景
    • 当你想在容器中直接构造对象时使用,避免了不必要的临时对象创建和拷贝。
  • 语法
    • emplace_back:在容器末尾直接构造对象。
    • emplace_front:在容器开头直接构造对象(适用于std::dequestd::list)。
  • 示例
      std::map<int, std::string> myMap;myMap.emplace(4, "fast");    // 直接在 map 中构造 pairstd::vector<std::string> vec;vec.emplace_back("direct");  // 直接构造,无临时对象
    

3. 注意事项

  • emplace 直接在容器中构造对象,通常比 push 更高效,因为它避免了临时对象的创建和拷贝。
  • 在使用 push 时,容器需要调用拷贝构造函数或移动构造函数来添加元素。
  • 需要注意,如果强制对还有用的变量move,那么move后的变量会处于一种有效但未指定状态,不可依赖其内容

但是并不是所有的变量move之后都不可使用其内容,考虑如下的实例:

void MoveBuiltinTypes()
{cout<<"----------------"<<endl;std::vector<int> vec;int a = 10;vec.push_back(std::move(a)); // 使用push_back将已有对象a添加到容器中cout<<"a:"<<a<<endl;
}
void MoveCustomTypes()
{cout<<"----------------"<<endl;std::vector<std::string> vec;std::string s = "hello";vec.push_back(s);        // 拷贝构造:复制 s 到容器中vec.push_back(std::move(s)); // 移动构造:转移 s 的资源到容器中cout<<"s:"<<s<<endl;cout<<"s.size():"<<s.size()<<endl;
}
int main()
{MoveBuiltinTypes();MoveCustomTypes();return 0;
}

运行结果:
在这里插入图片描述string类型的变量s在move之后,内容被清空,size被置为0;内置类型int a变量在move之后,值没有发生变化。这样是为了尽可能提高效率,string调用移动构造,把s内容交换到vec内部;而a变量不占用堆区资源,不改变a的值反而提高了效率。
于是可以推断string的移动构造类似于:

string(string&& other) noexcept {data = other.data;    // 转移指针size = other.size;capacity = other.capacity;other.data = nullptr; // 原对象指针置空other.size = 0;other.capacity = 0;
}

二、全文总结:

(考虑占有资源的自定义类型)

push:对象已经存在,用push。传参时候,传值调用拷贝构造,可能引发拷贝或移动开销;传引用则需要考虑是直接传引用还是传const引用。
emplace:直接在容器内部构造对象,避免临时对象开销,性能更优。

优先使用 emplace:
当元素未构造且可直接通过参数构造时,优先使用 emplace 以提升性能。

    myMap.emplace(42, "answer");  // 优于 myMap.insert({42, "answer"});

使用 push 的场景:

  • 需要保留原对象(拷贝语义)。
  • 需要显式移动资源(移动语义)。
  • 兼容旧代码或特定接口要求。


转载请注明出处


/***                                                                          *          .,:,,,                                        .::,,,::.          *        .::::,,;;,                                  .,;;:,,....:i:         *        :i,.::::,;i:.      ....,,:::::::::,....   .;i:,.  ......;i.        *        :;..:::;::::i;,,:::;:,,,,,,,,,,..,.,,:::iri:. .,:irsr:,.;i.        *        ;;..,::::;;;;ri,,,.                    ..,,:;s1s1ssrr;,.;r,        *        :;. ,::;ii;:,     . ...................     .;iirri;;;,,;i,        *        ,i. .;ri:.   ... ............................  .,,:;:,,,;i:        *        :s,.;r:... ....................................... .::;::s;        *        ,1r::. .............,,,.,,:,,........................,;iir;        *        ,s;...........     ..::.,;:,,.          ...............,;1s        *       :i,..,.              .,:,,::,.          .......... .......;1,       *      ir,....:rrssr;:,       ,,.,::.     .r5S9989398G95hr;. ....,.:s,      *     ;r,..,s9855513XHAG3i   .,,,,,,,.  ,S931,.,,.;s;s&BHHA8s.,..,..:r:     *    :r;..rGGh,  :SAG;;G@BS:.,,,,,,,,,.r83:      hHH1sXMBHHHM3..,,,,.ir.    *   ,si,.1GS,   sBMAAX&MBMB5,,,,,,:,,.:&8       3@HXHBMBHBBH#X,.,,,,,,rr    *   ;1:,,SH:   .A@&&B#&8H#BS,,,,,,,,,.,5XS,     3@MHABM&59M#As..,,,,:,is,   *  .rr,,,;9&1   hBHHBB&8AMGr,,,,,,,,,,,:h&&9s;   r9&BMHBHMB9:  . .,,,,;ri.  *  :1:....:5&XSi;r8BMBHHA9r:,......,,,,:ii19GG88899XHHH&GSr.      ...,:rs.  *  ;s.     .:sS8G8GG889hi.        ....,,:;:,.:irssrriii:,.        ...,,i1,  *  ;1,         ..,....,,isssi;,        .,,.                      ....,.i1,  *  ;h:               i9HHBMBBHAX9:         .                     ...,,,rs,  *  ,1i..            :A#MBBBBMHB##s                             ....,,,;si.  *  .r1,..        ,..;3BMBBBHBB#Bh.     ..                    ....,,,,,i1;   *   :h;..       .,..;,1XBMMMMBXs,.,, .. :: ,.               ....,,,,,,ss.   *    ih: ..    .;;;, ;;:s58A3i,..    ,. ,.:,,.             ...,,,,,:,s1,    *    .s1,....   .,;sh,  ,iSAXs;.    ,.  ,,.i85            ...,,,,,,:i1;     *     .rh: ...     rXG9XBBM#M#MHAX3hss13&&HHXr         .....,,,,,,,ih;      *      .s5: .....    i598X&&A&AAAAAA&XG851r:       ........,,,,:,,sh;       *      . ihr, ...  .         ..                    ........,,,,,;11:.       *         ,s1i. ...  ..,,,..,,,.,,.,,.,..       ........,,.,,.;s5i.         *          .:s1r,......................       ..............;shs,           *          . .:shr:.  ....                 ..............,ishs.             *              .,issr;,... ...........................,is1s;.               *                 .,is1si;:,....................,:;ir1sr;,                  *                    ..:isssssrrii;::::::;;iirsssssr;:..                    *                         .,::iiirsssssssssrri;;:.                      */						 
http://www.dtcms.com/wzjs/810261.html

相关文章:

  • 学校部门网站建设情况汇报新中式家具
  • 成都企业建站模板网站设置了字体为黑体怎么改字体
  • 网站开发 前端 后端 如何结合手机建站程序
  • 太仓网站建设平台wordpress腾讯云cos
  • 微信平台与微网站开发设计个人网页
  • 网站开发主菜单和子菜单深圳网站建设是哪个
  • 小说网站开发流程免费简单门户网站开发
  • 网站开发建设专业的公司wordpress 页面调用标签
  • 网站开发中文摘要网页浏览器推荐
  • 招聘网站页面网站建设企业建站
  • 杭州怎么做网站电商服务
  • 贵阳中国建设银行招聘信息网站公司平台
  • 网站页面组成部分政务建设网站得必要性
  • 济南高端建站长沙民企人才网
  • 苏州正规做网站公司大岭山仿做网站
  • 苏州网站建设软件国内有做外汇的正规网站吗
  • 移动端购物网站建设帝国调用网站名称
  • 网站开发前端工程师net网站开发net网站开发
  • 购物网站开发项目意义留言网站模板
  • 中药材天地网做中药零售网站免费公众号模板编辑器
  • 专门建设网站的公司网站开发体系
  • 安阳网站设计哪家好网页设计公司建设网站
  • 自媒体135网站免费下载安装医院网站可信认证必须做吗
  • 会网站建设怎样赚钱网站建设相关话术
  • 免费做印章的网站WordPress缩图不显示
  • 南宁区建设银行招聘网站湖北响应式网站建设企业
  • 网站前置审核申请报告网上如何建平台网站
  • 南京个人网站建设模板深圳搬家公司哪家好
  • 镇江网站建设工作室网站做联盟广告能赚钱吗
  • m开头的手机网站怎么做企业网站建设变相收取等级保护费