移动语义:

push语句有时候会通过移动语义来提高性能

#include <iostream>
#include <vector> class Element
{
public:
Element(int im,std::string string) :
Im(im),mString(string)
{ } virtual ~Element()
{} private:
int Im;
std::string mString;
}; int main()
{
std::vector<Element> myIntVec;
Element myEle(,"abcd");
myIntVec.push_back(myEle); return ;
}
myIntVec不是临时对象,所以在执行这条语句的时候,会对 myIntVec 进行复制副本,所以为了避免这种复制,可以这样。
myIntVec.push_back(std::move(myEle));

这样做的后果就是再也不能调用myEle了,

在push_back(const  T&& val );这样的定义,可以这样:

myIntVec.push_back(Element(10,"abcd"));
emplace操作

在C++中emplace的意思就是 "放置到位"的意思。std::vector的方法有emplace_back();这个方法与push_back()不同就是他不会复制和移动任何数据,只会在容器内部分配空间,就地创建对象。

myIntVec.emplace_back(12,"cedc");
emplace_back()可接受数目可变的参数。empalce_back()和使用移动语句的push_back()之间的差异取决于编译器实现这些操作的方式;
size(),capacity()和reserve()
首先明白这几个方法的意思:myIntVec.size()返回的是  myIntVec当前的容器数目,myIntVec.capacity()返回的是总体容量。myIntVec.reserve(size_t size),意思是预分配空间
接下来给出一个实例:
												

vector详讲(三)实例的更多相关文章

  1. vector详讲(二)迭代器

    先看一下代码: #include <iostream> #include <vector> int main() { std::vector<double> dou ...

  2. vector详讲(一)

    <vector>头文件里带有两个类型参数的类模板,第一个参数是需要指定的数据类型,第二个是分配器(allocator)类型 template<class T, class Alloc ...

  3. zTree应用实例详讲(3)

    zTree应用实例详讲(3) 上一讲中,已经讲到了重命名与删除.那么这一讲,我们来做新建文件夹. 其实新建是非常简单的,想一下我们想要的效果:点击新建,然后在一个节点下面出现一个新建的文件夹,并且与此 ...

  4. zTree应用实例详讲

    zTree应用实例详讲(1) 因为项目的需要,要创建一棵动态的文件树,此树除了实现异步获取子节点外,还要实现对树节点的增.删.改.查.移动.重命名.批量删除.批量移动. 每一个操作都要和数据库打交道. ...

  5. CvMat、Mat、IplImage之间的转换详解及实例

    见原博客:http://blog.sina.com.cn/s/blog_74a459380101obhm.html OpenCV学习之CvMat的用法详解及实例 CvMat是OpenCV比较基础的函数 ...

  6. SQL优化 MySQL版 - 多表优化及细节详讲

    多表优化及细节详讲 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:本文章需要MySQL数据库优化基础或观看前几篇文章,传送门: B树索引详讲(初识SQL优化,认识索引):htt ...

  7. SQL优化 MySQL版 - 单表优化及细节详讲

    单表优化及细节详讲 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:本文章需要MySQL数据库优化基础或观看前几篇文章,传送门: B树索引详讲(初识SQL优化,认识索引):htt ...

  8. httpd配置文件详解及实例

    httpd配置文件详解及实例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.http协议的组成 http协议是C/S架构:我们可以把浏览器(如:IE,Firefox,Safar ...

  9. XML参考 :XmlReader 详解、实例

    XML参考 :XmlReader 详解.实例-- 详解 转:http://www.cnblogs.com/Dlonghow/archive/2008/07/28/1252191.html XML参考 ...

随机推荐

  1. 二、cent OS安装配置tomcat

    下载tomcat的tar包http://tomcat.apache.org/download-80.cgi 确保安装前已经安装JDKjava -version如果没有安装可以参考上一篇文章:http: ...

  2. SparkGraphx计算指定节点的N度关系节点

    直接上代码: package horizon.graphx.util import java.security.InvalidParameterException import horizon.gra ...

  3. java类加载机制及方法调用

    类加载机制 概述 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading).验证(Verification).准备(Preparation).解析(Resoluti ...

  4. SQL语句的拼凑

    StringBuilder sql = new StringBuilder("SELECT * FROM t_customer WHERE 1=1"); /* * 2. 判断条件, ...

  5. 从BASE理论到CAP理论

    BASE理论面向的是大型高可用可扩展的分布式系统,和传统事务的CID特性是相反的,它完全不同于ACID的强一致性模型,而是提出通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到 ...

  6. csharp: read excel using Aspose.Cells

    /// <summary> /// /// </summary> /// <param name="strFileName"></para ...

  7. IEEE VIS 2018专题

    PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域,发现可视化领域有意思的内容.不想错过可视化领域的精彩内容, 就快快关注我们吧 :) 本文带有视频,浏览视频请关注公众号浏览. IEEE VI ...

  8. 您只能在 HTML 输出流中使用 document.write,啥意思

    JavaScript :写入到HTML输出语法 注意:只能在HTML输出中使用,如果在文档已经加载后使用(比如在函数中)  会覆盖到整个文档 <!DOCTYPE html> <htm ...

  9. JS实现图片放大镜

    将一个小图放置在一个小盒子里,当鼠标在小盒子里移动时,出现一个移动块,右侧出现一个大盒子,显示出小盒子中移动块所在区域的等比例放大的图片内容.需要实现的效果如下: 基本实现思路为:右侧大盒子为一个可视 ...

  10. AngularJS+RequireJs实现动态加载JS和页面的方案研究【下】

    about.js: [html] view plain copy 在CODE上查看代码片派生到我的代码片 define(['app'], function(app) { app.controller( ...