1、创建vector容器:

std::vector<int> data;

std::vector<int> data(20);大小20,自动赋值为0

std::vector<int> data(20,9);大小20,并且初始值为9

表示创建vector容器,其容器内的数据类型为int类型。该初始化时,因为容器内没有元素,因而没有分配空间。可以调用reserve()函数增加容器的容量。

2、vector容器的容量和大小

容量:在不分配更多内存的情况下可以保存的最多元素个数。

大小:容器实际所保存的元素个数。

std::vector<int > data;

data.capacity();得到容量大小。

data.size();得到容器实际大小

容器的大小可以使用resize()来改变容器大小。reserve()函数增加容量。

3、访问元素

使用方括号,在方括号中使用引用。下标默认从0开始。使用push_back(),insert(),emplace()插入新的元素。为了安全,防止出现数组下标越界。尽可能使用at()去访问vector元素。

4、增加元素

使用push_back()函数,在序列的末尾添加一个元素。使用emplace_back()也可以达到同样的效果

push_back()和emplace_back()的区别:emplace_back()直接调用构造函数。而push_back()则需要生成对象,然后调用对象构造函数。

5、插入元素

使用emplace()和insert()插入元素

iterator insert( iterator loc, const TYPE &val );
void insert( iterator loc, size_type num, const TYPE &val );
void insert( iterator loc, input_iterator start, input_iterator end );
insert() 函数有以下三种用法:
在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,
在指定位置loc前插入num个值为val的元素
在指定位置loc前插入区间[start, end)的所有元素 .

6、删除元素

使用clear()来删除元素,但是该操作并没有改变容器的容量;使用pop_back()函数来删除尾部元素。

使用erase()来删除容器内的一个或者多个元素;remove()可以删除匹配特定特征值的一段元素。

参考代码:

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    cout << "vector 使用示例" << endl;
    cout << "vector 创建"<<endl;
    cout << "----------------------------"<<endl;
    //创建vector的三种方式
    vector<int> data;
    vector<);
    vector<,);
    cout << "----------vector容量和大小-----------"<<endl;
    cout << "容量"<< data1.capacity() << "大小"<<data1.size()<<endl;
    cout << "容量"<< data2.capacity() << "大小"<<data2.size()<<endl;
     data1.reserve();
     cout << data1.capacity()<<endl;
     data1.resize();
     cout<< data1.size() << "容量"<<data1.capacity()<<endl;
     cout<< "-----------访问元素----------"<<endl;
     cout << data2.at() <<]<<endl;
     cout << data2.front() << " " << data2.back();
     cout << "-----------增加元素---------" <<endl;
     data2.push_back();
     data2.emplace_back();
     cout << data2.back()<<endl;
     cout << "-------插入元素-------"<<endl;
     vector<string> words {"one","two","three"};
     auto iter = words.emplace(++begin(words),,'A');
     cout << words.at()<<*iter;
     //insert
     auto iter1 = words.insert(++std::begin(words),"twowwwww");
     cout    << *iter1<<endl;
     cout << "----- 删除元素---------" <<endl;
     //words.clear();//清楚所有元素,不改变容量
     words.pop_back();
     cout << *(words.end()-)<<endl;
     //erase()删除一个或者多个元素
     //remove()删除匹配特定值的一段
     //std::remove(begin(words),end(words),"two");
     cout << words.back()<<endl;
    ;
 }

vector使用小结的更多相关文章

  1. c++第十四天

    <c++ primer, 5E> 第91页到第94页,笔记: 1.vector支持的操作. v.empty().v.size().v.push_back(t).v[n] 2.试图通过下标访 ...

  2. STL中vector小结

    ()使用vector之前必须包含头文件<vector>:#include<vector> ()namespace std{ template <class T, clas ...

  3. C++中标准容器Vector,元素操作.insert()小结

    insert() 函数有以下三种用法: iterator insert( iterator loc, const TYPE &val );  //在指定位置loc前插入值为val的元素,返回指 ...

  4. vector的用法小结(待补全

    1.vector的好处 支!持!删!除! 节!省!内!存! 2.一点基础的小操作 ①插入操作:v.push_back(x) 在尾部插入元素x: ②删除操作 : v.erase(x)删除地址为x的元素 ...

  5. ?:,reverse,vector的基本小结

    #include <cstdio> //此代码为网上所复制 #include <iostream> #include <string> #include <s ...

  6. HTML最新标准HTML5小结

    写在前面 HTML5出来已经很久了,然而由于本人不是专业搞前端的,只知道有这个东西,具体概念有点模糊(其实就是一系列标准规范啦):因此去年(2015.11.09),专门对HTML5做了个简单的小结,今 ...

  7. 学习RaphaelJS矢量图形包--Learning Raphael JS Vector Graphics中文翻译(一)

    (原文地址:http://www.cnblogs.com/idealer3d/p/LearningRaphaelJSVectorGraphics.html) 前面3篇博文里面,我们讲解了一本叫做< ...

  8. C++ typedef用法小结 (※不能不看※)

    C++ typedef用法小结 (※不能不看※) 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不 ...

  9. 跟我一起学STL(2)——vector容器详解

    一.引言 在上一个专题中,我们介绍了STL中的六大组件,其中容器组件是大多数人经常使用的,因为STL容器是把运用最广的数据结构实现出来,所以我们写应用程序时运用的比较多.然而容器又可以序列式容器和关联 ...

随机推荐

  1. mongodb远程连接访问

    随着云计算,云服务的不断发展演进,数据库的管理及维护方式也在转变,传统基于C/S客户端工具管理的方式,已经无法满足实际需要. TreeSoft数据库管理系统,采用web方式,对mongoDB,MySQ ...

  2. 【 js 基础 】【 源码学习 】源码设计 (更新了backbone分析)

    学习源码,除了学习对一些方法的更加聪明的代码实现,同时也要学习源码的设计,把握整体的架构.(推荐对源码有一定熟悉了之后,再看这篇文章) 目录结构:第一部分:zepto 设计分析 第二部分:unders ...

  3. BZOJ5322: [JXOI2018]排序问题

    传送门 不难看出期望就是 \(\frac{(n+m)!}{\prod_{v=1}^{max}(cnt_v!)}\),\(cnt_v\) 表示 \(v\) 这个数出现的次数. 贪心就是直接把 \(m\) ...

  4. JS代理模式实现图片预加载

    ---恢复内容开始--- 刚刚说了懒加载,现在我们来搞搞预加载吧 预加载的核心: 图片等静态资源在使用前提前请求. 资源后续使用可以直接从缓存中加载,提升用户体验. 几个误区: 预加载不是为了减少页面 ...

  5. 2017年5月24日 HTML 基础知识(二)

    1 快捷方式:html:xt +tab   过渡XHTML html:xs+tab  严格XHTML !+tab  html5的标签结构 2.Charset   编码 <meta charset ...

  6. js柯里化

    这篇文章讲的很好啊~例子很好 http://www.zhangxinxu.com/wordpress/2013/02/js-currying/ 这篇是讲函数式编程的,其中也有涉及到,说明了柯里化是一种 ...

  7. jQuery同步Ajax带来的UI线程阻塞问题

    一.需求 在调ajax接口的时候因为有时间延迟,想要做一个loading加载的效果,等数据返回时再把loading的效果去掉. 所以我在调ajax的代码块前面加了显示loading效果的代码,ajax ...

  8. 手把手在MyEclipse中搭建Hibernate开发环境

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53414303冷血之心的博客) 在MyEclipse中如何搭建Hib ...

  9. 自定义适用于手机和平板电脑的 Dynamics 365(一):主页

    当用户首次打开适用于手机和平板电脑的 Dynamics 365 时,他们将看到默认为“销售仪表板”的主页. 您可以创建新仪表板或 Web 应用程序中编辑现有仪表板,然后为移动设备启用它们,用户可以选择 ...

  10. 【Kibana】Kibana入门教程

    一.Kibana简介及下载安装 Kibana是专门用来为ElasticSearch设计开发的,可以提供数据查询,数据可视化等功能. 下载地址为:https://www.elastic.co/downl ...