std::vector如何使用

2023-11-08

Vector被认为是一个容器,是因为它可以存放各种类型的对象,正因为这,有时候也被人叫动态数组,能够增加和压缩数据


为了使用vector,必须在头文件中包含如下代码:

#include <vector>

按照下面格式使用:

vector<int> vInts;
 或者连在一起,使用全名:
std::vector<int> vInts;


c.assign(beg,end)
c.assign(n,elem)
将[beg; end)区间中的数据赋值给c。
将n个elem的拷贝赋值给c。

c.at(idx)
传回索引idx所指的数据,如果idx越界,抛出out_of_range。

c.back()
传回最后一个数据,不检查这个数据是否存在。

c.begin()
传回迭代器中的第一个数据地址。

c.capacity()
返回容器中数据个数。

c.clear()
移除容器中所有数据。

c.empty()
判断容器是否为空。

c.end()
指向迭代器中的最后一个数据地址。

c.erase(pos)
c.erase(beg,end)
删除pos位置的数据,传回下一个数据的位置。
删除[beg,end)区间的数据,传回下一个数据的位置。

c.front()
传回第一个数据。

get_allocator
使用构造函数返回一个拷贝。

c.insert(pos,elem)
c.insert(pos,n,elem)
c.insert(pos,beg,end)
在pos位置插入一个elem拷贝,传回新数据位置。
在pos位置插入n个elem数据。无返回值。
在pos位置插入在[beg,end)区间的数据。无返回值。

c.max_size()
返回容器中最大数据的数量。

c.pop_back()
删除最后一个数据。

c.push_back(elem)
在尾部加入一个数据。

c.rbegin()
传回一个逆向队列的第一个数据。

c.rend()
传回一个逆向队列的最后一个数据的下一个位置。

c.resize(num)
重新指定队列的长度。

c.reserve()
保留适当的容量。

c.size()
返回容器中实际数据的个数。

c1.swap(c2)
swap(c1,c2)
将c1和c2元素互换。
同上操作。

vector<Elem> c
vector<Elem> c1(c2)
vector <Elem> c(n)
vector <Elem> c(n, elem)
vector <Elem> c(beg,end)
c.~ vector <Elem>()
创建一个空的vector。
复制一个vector。
创建一个vector,含有n个数据,数据均已缺省构造产生。
创建一个含有n个elem拷贝的vector。
创建一个以[beg;end)区间的vector。
销毁所有数据,释放内存。


operator[]
返回容器中指定位置的一个引用。

具体使用:

#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    vector<int> v;
    v.reserve(10);

for (int i = 0; i<7; i++)
    v.push_back(i);

int t1 = v[3]; // not bounds checked
int t2 = v.at(3); // bounds checked  
cout << t1 << "  " << t2 << endl;

getchar();
return 0;
}

控制台打印结果如下:

这里写图片描述



FR:徐海涛(hunk Xu) QQ技术交流群:386476712

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

std::vector如何使用 的相关文章

  • Cpp学习——动态内存管理

    目录 一 new 1 malloc realloc calloc的使用不便之处 2 new的好处 3 opreator new 二 delete 1 为什么要有delete 2 为什么要匹配使用 一 new 1 malloc realloc
  • C++ Char操作

    C Char操作 1 字符处理函数 isalpha ch 如果ch是一个字母 返回非 int 0值 否则 返回 int 0 isalnum 判断是否是字母或者数字字符 isdigit 判断是否是数字字符 0 9 islower 判断是否是小
  • MySql.Data连接数据库mysql

    using MySql Data MySqlClient using MySql Data using System Data using System IO MySqlConnection con new MySqlConnection
  • 【千律】C++基础:宽窄字节字符串的相互转换与控制台输出

    方案1 include
  • 如何重载前置++和后置++

    前置 即 运算符位于操作数的前面 例如 i 后置 即 运算符位于操作数后面 例如 i 注意一下几点 1 前置 重载时没有参数 而后置 重载时有参数 不会使用其参数 仅仅是区分用 可以理解为前置 后面有参数了 所以不需要参数 2 前置 需要返
  • 静态变量与静态函数

    堆与栈 1 栈区 stack 由编译器自动分配释放 存放函数的参数值 局部变量的值等 操作是类似于数据结构中的栈 2 堆区 heap 一般有程序员分配和释放 动态存储分配 分配方式类似于链表 3 全局区 static 全局变量和静态变量的存
  • std::vector如何使用

    Vector被认为是一个容器 是因为它可以存放各种类型的对象 正因为这 有时候也被人叫动态数组 能够增加和压缩数据 为了使用vector 必须在头文件中包含如下代码 include
  • 为什么C++有多种整型?

    C 中有多种整型是为了满足不同的需求 提供更灵活和高效的整数表示方式 不同的整型具有不同的字节大小 范围和精度 可以根据应用的需求选择合适的整型类型 以下是一些原因解释为什么C 有多种整型 内存和性能优化 不同的整型在内存中占用的空间不同
  • qt输出到控制台

    include
  • C# 全局变量与局部变量

    C 在变量之间有一个基本的区分 把在类型级别声明的变量看作字段 全局变量 而把方法级别声明的变量看作局部变量 class ScopeTest static int j 20 public static void Main int j 30
  • C语言面试必问的经典问题(纯”gan“货)

    C语言面试必问的经典问题 1 预处理 1 预编译 编译过程最先做的工作是啥 何时需要预编译 指令有什么 答 预编译就是预处理 就是把一些文本的替换工作工作 预编译指令 include ifdef ifndef else endif 编译 字
  • Qt对Excel表格的自动化调用汇总(新建、打开和保存)

    为便于实时采集并保存数据到excel 需要调用QAxObject 首先定义变量excel workbooks workbook worksheets worksheet range 等 ifndef EXCEL H define EXCEL
  • 【千律】C++基础:析构函数

    报错strcpy不安全 解决方法 项目 gt 属性 gt C C gt 预处理器 gt 预处理器定义 添加 CRT SECURE NO DEPRECATE CRT NONSTDC NO DEPRECATE include
  • C-结构体

    目录 结构体 定义结构体 第一种方式 定义的同时定义变量名 第三种方式 赋值和初始化 如何取出结构体成员 结构体变量 结构体指针作为函数参数进行传递 结构体运算 结构体 形成了一个新的数据类型 定义结构体 第一种方式 定义一个新的数据类型
  • C++杂谈 inline关键字

    1 inline 用于把函数指定为内联函数 且该关键字需要与函数定义放在一起 与函数声明放在一起没有效果 2 内联函数一般只适用于比较精简的小函数 实际上内联函数是通过牺牲空间去换取时间上的效率 如果函数过于庞大会造成大量空间的浪费 所以需
  • C++的文件操作open与close

    先看一下相应的打开文件的不同参数的作用 C open 打开文件 含打开模式一览表 打开模式可以用多个 但符号是 不是 注意啦 比如 ios in ios binary表示用二进制模式 以读取的方式打开文件 ios out ios binar
  • 【千律】C++基础:通过递归函数计算N的阶乘

    include
  • c++通讯录管理系统

    系统需求 代码 include
  • Lambda表达式、std::function、和std::bind函数

    Lambda表达式 std function 和std bind函数 Lambda表达式 capture parameters mutable exception gt return type statement 1 capture 捕获外
  • C/C++创建和删除文件夹操作

    一 创建文件夹 1 调用Windows API函数 CreateDirectory 头文件

随机推荐

  • Intellij IDEA 生成Get/Set方法快捷键

    1 选中你要创建getter setter的字段 然后选择generator 可以拖选住你想要生成get set方法的属性 点击完成即可自动生成get和set方法 菜单栏 gt generator 或者 点击右键 gt generator
  • Ubuntu系统为程序创建桌面快捷方式

    为了不用每次都要进入命令行启动应用程序 为程序创建快捷方式是一个很方便的方法 尤其是你的程序需要在团队外部使用的时候 桌面创建快捷方式一般使用 desktop为后缀的文件实现 该文件的内容格式基本要素如下 Desktop Entry Nam
  • 【C++】 应用指针,编写一个函数strcmp()实现两个字符串s1和s2的比较。如果s1=s2,则返回值为0,如果s1不等于s2,返回它们两者第一个不同的字符的ASC II码差值,并且若s1>s2,

    include
  • 快速开发 jQuery 插件的 10 大技巧(转)

    1 把你的代码全部放在闭包里面 这是我用的最多的一条 但是有时候在闭包外面的方法会不能调用 不过你的插件的代码只为你自己的插件服务 所以不存在这个问题 你可以把所有的代码都放在闭包里面 而方法可能应该放在Prototype方法内部 我们后面
  • MySql进阶-间隙锁(gap-key)

    文章目录 Innodb锁算法 关闭Gap Lock Gap key 解决的问题 间隙锁影响 MVCC 核心原理 ReadView 可参考 快照读 当前读可参考 参考 InnoDB存储引擎 注意 gap key是innodb存储引擎来解决当前
  • RK3568虚拟机基础环境搭建之更新源、安装网络工具、串口调试、网络连接、文件传输、安装vscode和samba共享服务

    镜像下载 域名解析 时间同步请点击 阿里云开源镜像站 前言 开始搭建RK3568的基础虚拟机 具备基本的通用功能 主要包含了串口工具minicom 远程登陆ssh 远程传输filezilla 代码编辑工具vscode 虚拟机 文档对对虚拟机
  • a later version of node.js is already installed. Setup will now exit.

    背景 Window想要彻底删除node js安装包 并重新安装新的安装包 操作 彻底删除步骤可以参考 https www cnblogs com fighxp p 7410235 html 结果 在执行完上面步骤操作后 在重新安装时仍报 a
  • C/C++编程笔记:C++中的stringstream及其应用

    stringstream将字符串对象与流相关联 使您可以像从流中读取字符串一样 例如cin 基本方法是 clear 清除流 str 获取并设置其内容存在于流中的字符串对象 运算符 lt lt 将字符串添加到stringstream对象 运算
  • 超详细的集合(set)

    集合 1 定义 由一系列不重复的不可变类型变量组成的可变映射容器 相当于只有键没有值的字典 键则是集合的数据 集合是无序的 所以输入的次序与显示的次序可能不一致 2 基本操作 2 1集合的创建 1 创建空集合 创建空集合 不能直接用 因为系
  • springboot连接mybatis

  • Python数据类型之元组及字典

    元组 tuple 元组表现形式tuple 元组是一个不可变序列 使用 创建元素 元组不是空元组至少有一个 逗号 当元组不是空元组时括号可以省略 元组解包指将元组当中的每一个元素都赋值给一个变量 使用 创建的 my tuple 创建一个空的元
  • idea解决控制台中文乱码问题

    前言 IntelliJ IDEA 如果不进行配置的话 运行程序时控制台中文乱码问题会非常严重 严重影响我们对信息的获取和程序的跟踪 特总结以下 4 点用于解决控制台中文乱码问题 希望有助于大家 注意 下面根据我日常工作的经验总结 排序的先后
  • SpringBoot默认的JSON解析方案

    一 什么是JSON JSON JavaScript Object Notation 是一种基于JavaScript语法子集的开放标准数据交换格式 JSON是基于文本的 轻量级的 通常被认为易于读 写 好了 废话不多说 下面开始介绍如何在Sp
  • Java_.jar .war .ear 详解

    jar 全称 java archive 包含 class properties文件 是文件封装的最小单元 部署文件 application client xml 级别 小 war 全称 web archive 包含 Servlet JSP页
  • Tomcat和Weblogic的区别

    接触到两种Java的web服务器 做项目用的Tomcat 看视频看的是WebLogic Server WLS 都是web服务器 有什么区别和联系呢 一 先简单介绍一下这两种服务器 WebLogic是美国bea公司出品的一个applicati
  • webpack实战,手写loader和plugin

    序言 对于 webpack 来说 loader 和 plugin 可以算是需求程度最为广泛的配置项了 但是呢 单单止步于配置可能还不够 如果我们自己有时候想要 diy 一个需求 但是 webpack 又没有相关的 loader 和 plug
  • 移动端unet人像分割模型--1

    个人对移动端神经网络开发一直饶有兴致 去年腾讯开源了NCNN框架之后 一直都在关注 近期成功利用别人训练好的mtcnn和mobilefacenet模型制作了一个ios版本人脸识别swift版本demo 希望maskrcnn移植到ncnn 在
  • MySQL 数据库崩溃(crash)的常见原因和解决办法

    墨墨导读 本文来自墨天轮用户投稿 详述MySQL 数据库崩溃 crash 的常见原因和解决办法 希望对大家有帮助 数据技术嘉年华 十周年盛大开启 点我立即报名 大会以 自研 智能 新基建 云和数据促创新 生态融合新十年 为主题 相邀数据英雄
  • 使用Git Extensions简单入门Git

    前言 关于这个主题 之前我录了段视频教程 在本地看清晰度还可以 但传到优酷上就很不清晰了 即使是后来重制后还是一样不清晰 所以现在想整理成文字版 当然 大家还可以将我百度云上的视频下载下来观看 连同优酷的相关地址都附在文末了 正文 说到Gi
  • std::vector如何使用

    Vector被认为是一个容器 是因为它可以存放各种类型的对象 正因为这 有时候也被人叫动态数组 能够增加和压缩数据 为了使用vector 必须在头文件中包含如下代码 include