vector

向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。

Character

高效

C++标准要求vector在运行时高效快速地添加元素。既然能高效增长,那么定义长度也就没有多大必要了。事实上定义长度反而会降低性能,除非所有元素值一样(那你何不“重复定义初始化”)。一旦值不同,最好的办法还是创建空vector,然后push_back元素。

动态增长的副作用:不能使用范围for循环;可能使迭代器失效。

Initial

如何选择初始化

  • 直接初始化

    • 初始值已知且数量确定
    • 是另一个对象的副本
  • 创建空vector,然后push_back元素

    • 数量不确定

代码演示

vector<string> sv;                   //默认初始化
vector<string> sa(sv); //副本初始化
vector<string> sb = sv; //同上
vector<string> sc(3, "hello"); //重复定义初始化
vector<string> sd = {"a", "b", "c"}; //列表初始化
vector<string> se(10); //值初始化 //()和{}
//()指示值数量,{}指示具体值
vector<int> ia(10); //有10个元素
vector<int> ib{10}; //初始值为10 vector<int> ic(10, 1); //10个1
vector<int> id{10, 1}; //10和1

Function

All the operation

操作 含义
v.empty() 为空?真:假
v.size() (::size_type)元素个数
v.push_back() 尾端插入元素
v[n] return &
v1 = v2 将v2元素拷贝到v1
v1 = {a,b,c} 将列表中的元素拷贝到v1中
v1 == v2 数量相同,元素相同
<,<=,>,>= 以字典序比较

注:v.size()的返回同string一样,需要用dealtype(v.size())定义;v[n]返回的是引用。比较运算符取决于元素的值是否可以比较(自定义类需要重载运算符)。不能用下标添加元素,改值可以。

Pushelem

把一个值压(push)到vector对象的尾端。

如果循环体内部包含有向vector对象中添加元素的语句,就不能使用范围for循环。

string word;
vector<string> text;
while(cin>>word){
text.push_back(word);
}

Printelem

vector<string> text={"hello","world"};
for(decltype(text.size()) i=0;i!=text.size();++i)
{
cout<<text[i];
}
cout<<endl;

C++ 初读vector的更多相关文章

  1. TensorFlow 源代码初读感受

    把自己微博发的文章:http://www.weibo.com/1804230372/En7PdlgLb?from=page_1005051804230372_profile&wvr=6& ...

  2. C++ 初读迭代器

    迭代器 这是个啥? string对象或vector对象可以通过下标访问每一个元素,迭代器也具有同样的效果.那又有什么不同呢?事实上并不是所有的容器到可以使用下标访问每一个元素,即在容器上迭代器更具普适 ...

  3. 初读"Thinking in Java"读书笔记之第五章 --- 初始化与清理

    用构造器确保初始化 构造器可以确保每个对象都会得到初始化,Java毁在创建对象时自动调用构造器. 构造器采用与类名相同的名称,因此并不适合"每个方法首字母小写的风格". 构造器默认 ...

  4. D1——初读《Head First Java》

    今天随便看了点<Head First Java>,发觉这本书的风格真是有趣.打算先把这本书踏踏实实的看了.学习切忌好高骛远.心浮气躁,尤其入门基础阶段更应该踏踏实实地学习知识.下面随便谈谈 ...

  5. JavaScript权威指南(第六版) 初读笔记

    JavaScript的5种原始类型:undefined.null.布尔值.数字和字符串. JavaScript中两个非常重要的数据类型是对象和数组. 通过方括号定义数组元素和通过花括号定义对象属性名和 ...

  6. 201771030106-葛佳诚 实验一 软件工程准备-<初读《构建之法——现代软件工程》有问>

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE 作业要求链接 https://www.cnblogs.com/nwnu-da ...

  7. [初读笔记] Cloud Migration Research: A Systematic Review (TCC, 2013)

    Pooyan Jamshidi, Aakash Ahmad, Claus Pahl, "Cloud Migration Research: A Systematic Review," ...

  8. xml初读

    形式良好的 XML 文档 “形式良好”或“结构良好”的 XML 文档拥有正确的语法. “形式良好”(Well Formed)的 XML 文档会遵守前几章介绍过的 XML 语法规则: XML 文档必须有 ...

  9. javascript对象初读

    <script type="text/javascript"> function baseClass() { this.showMsg = function() { a ...

随机推荐

  1. Python 几个常见函数

    本文主要总结常见的函数知识点. 1.zip函数 用来并行迭代,可以把两个序列并在一起,然后返回一个元组的列表 names = ['Ann','Jame','Anla'] ages = [11,12,1 ...

  2. idea 错误: 找不到或无法加载主类

    1.cmd进入项目目录 2.输入maven命令重构项目 mvn clean mvn idea:idea install

  3. 基于jeesite的cms系统(五):wangEditor富文本编辑器

    一.关于wangEditor: wangEditor —— 轻量级 web 富文本编辑器,配置方便,使用简单.支持 IE10+ 浏览器. 官网:www.wangEditor.com 文档:www.ka ...

  4. DataTable行列转置

    DataTable dtNew = new DataTable(); dtNew.Columns.Add("ColumnName", typeof(string)); ; i &l ...

  5. 一次基于innobackupex备份及binlog的单表恢复操作

    [环境介绍] 系统环境:Red Hat Enterprise Linux Server release 7.0 (Maipo) + Server version: 5.7.18-log MySQL C ...

  6. [Reinforcement Learning] Cross-entropy Method

    Cross-entropy Method(简称CEM)虽然是一种基于交叉熵的算法,但并不是我们熟知的监督学习中的交叉熵方法,与其说它是一种基于交叉熵的算法,倒不如说是一种基于蒙特卡洛和进化策略的算法. ...

  7. vue+element 正则表达式进行表单验证

    <template> <el-form :model="form" label-width="115px" ref="form&qu ...

  8. Writage让你的Word支持Markdown

    Writage 简单的执行后,word就可以在保存或打开的时候支持Markdown了!

  9. json 格式化的时候,日期格式化

    public class CustomIsoDateTimeConverter : IsoDateTimeConverter { public CustomIsoDateTimeConverter() ...

  10. 补记:完成了NG的SP1的全部内容 开始第二周

    DL本质上就是多层的Logistics Regression with different activation function and nicely designed back propagati ...