STL : vector 矢量容器

2023-11-19

目录

Vector

Capacity

Elements access

Modifiers

Allocator

Non-member Notice overloads

Template specializations


Vector

  • #include<vector>    using namespace std;

  • 矢量容器 :单向开口的连续内存空间,底层封装:数组;

  • 预留内存空间不够时,可以动态扩展(容器满了则新建容器同时进行拷贝);

  • 顺序序列:容器元素按照严格的线性顺序排列;

  • 动态数组:支持对序列中任意元素进行快速直接访问,高效的随机访问的容器;

  • 越靠后的插入或删除执行效率越高,删除不会释放限制的空间;

  • 拥有一段连续的内存空间,支持随机存取,但在中间进行插入和删除会造成内存块的拷贝;

  • Vector 接口函数介绍

Capacity

Name Role Notice
size 返回矢量实际存储元素数目(实际数据量)
max_size 返回矢量所能存储的最大的元素数目
resize 更改矢量实际存储,可自定义默认值填充 resize(num)
resize(num, elem)
capacity 不分配内存的情况下可以存储的最多元素个数
empty 判断矢量存储是否为空
reserve 更改矢量 capacity,避免 push_back 自动分配 reverse(len),预留空间,不可初始化,不可赋值
shrink_to_fit 请求降低存储使得 capacity 和 size 匹配

Elements access

Name Role Notice
operator[ ] 迭代器访问容器元素
at 更加安全的访问元素,能判别是否越界并确定程序中止
front 返回第一个元素的引用
back 返回最后一个元素的引用
data (c11) 返回一个指向数组中第一个元素的指针(向量内部使用)

Modifiers

Name Role Notice
assign 替换旧元素为向量元素分配新值,也可修改向量大小 assign(begin, end)
assign(n, elem)
push_bach 向矢量的末尾添加元素
pop_back 删除矢量最后一个元素
insert 指定位置插入一个或多个元素(构造并复制) insert(iter, elem)
insert(iter,count,elem)
insert(pos, _first, _last)
erase 删除元素 erase(pos)
erase(_first, _last)
swap 交换容器,内存释放(拷贝构造,capacity == size )
clear 清除容器
emplace 指定位置插入一个元素(就地构造,转发实现)
emplace_back 矢量末尾插入一个元素(就地构造,转发实现)

Allocator

Name Role Notice
get_allocator 返回矢量的内存分配器

Non-member Notice overloads

Name Role Notice
relational operators 关系型函数( =、>、<)
swap 交换容器的内容

Template specializations

Name Role Notice
vector 特殊的标准容器,1 bit 存储(byte 可实现动态位集),返回的不是 bool &,而是一个代理对象
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STL : vector 矢量容器 的相关文章

  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 在Android Studio gradle项目中使用NDK和STL

    我在将 stlport 链接到 Android Studio 中的 gradle 项目时遇到问题 使用 NDK 的 Eclipse Android 项目迁移到 Android Studio 该项目使用 STL 我有包含内容的 android
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • Linux驱动编程(总线设备驱动模型)

    一 驱动编写的3种方法 1 传统写法 使用哪个引脚 怎么操作引脚 都写死在代码中 最简单 不考虑扩展性 可以快速实现功能 修改引脚时 需要重新编译 2 总线设备驱动模型 引入 platform device platform driver
  • 最近opencv又报了啥错(一)

    前言 别骂了别骂了 太久没打python 手贼生 最近在搞opencv和一些ocr 报了一堆错 有些是python的原生错误 有的是opencv的 有的是我nt 就全部记录一下吧 1 bad argument type for built
  • 端口监控信息

    netstat nlptu grep 8080 一 0 0 0 0 8080 代表8080端口 对内网和外网都是开放的 tcp 0 0 0 0 0 0 8080 0 0 0 0 LISTEN 123941 java 二 查看网卡的代码 da
  • KVM中使用usb设备

    进来学习usb驱动 看到网上都在分析usb skeleton c的驱动框架 就想对其调试一下 看一下其函数调用流程 要想调试usb skeleton 首先需要kvm能够探测到usb设备 其次 在kvm中编译usb skeleton c 最后
  • 深度学习要学多久?半年能入门深度学习吗?

    深度学习的学习时间因个人背景 目标和学习方法而异 不同人可能需要不同的时间来掌握深度学习 深度学习要学多久 通常情况下 入门深度学习可能需要几个月的时间 如果你已经有相关背景知识 学习进度可能会更快 以下是一些因素 可以影响学习深度学习所需
  • 解一元二次方程-Java语言实现

    前言 高考完的那个暑假我就开始自学C语言 那时候通过看视频和 C primer plus 写了一个解一元二次方程的程序 从此走上了吊打大学同班同学的路 但是那次是用C语言写的 如今白云苍狗 我已经不是曾经的那个我了 但我还是一如既往的废物
  • Java的内省技术

    什么是内省 在计算机科学中 内省是指计算机程序在运行时 Run time 检查对象 Object 类型的一种能力 通常也可以称作运行时类型检查 不应该将内省和反射混淆 相对于内省 反射更进一步 是指计算机程序在运行时 Run time 可以
  • 大数据面试-03-大数据工程师面试题

    2 13 简述hadoop的调度器 FIFO schedular 默认 先进先出的原则 Capacity schedular 计算能力调度器 选择占用最小 优先级高的先执行 依此类推 Fair schedular 公平调度 所有的job具有
  • 三十三.二叉树的创建、后序遍历、深度统计。

    include
  • 【视频编码学习】VTM15.0编译运行

    VTM版本 15 0 操作系统 Win10 x64位 IDE Visual Studio 2019 编译器 cmake 利用VS2019运行VTM15 0 前言 一 下载VTM15 0 二 下载安装cmake 1 下载cmake并安装 2
  • Java中的IO流如何理解——精简

    目录 引言 缓冲流 字节缓冲流 字符缓冲流 转换流 字符输入转换流 字符输出转换流 序列化和反序列化 对象序列化 对象反序列化 打印流 Properties 引言 通过前面的简单学习 我们已经能够大致了解了关于文件的操作 但是能够明显感受到
  • mybatis中pagehelper分页、排序

    原文链接 https blog csdn net liuyuanjiang109 article details 78955881 在springboot 结合mybatis 时用到pagehelper 分页工具 并进行分页 排序 其git
  • 安装 mysqldb for python

    1 安装 ssetuptools wget http pypi python org packages 2 6 s setuptools setuptools 0 6c9 py2 6 egg md5 ca37b1ff16fa2ede6e19
  • 常用GIT命令速览,现学也能登堂入室

    系列文章目录 手把手教你安装Git 萌新迈向专业的必备一步 GIT命令只会抄却不理解 看完原理才能事半功倍 常用GIT命令速览 现学也能登堂入室 系列文章目录 一 GIT HELP 1 命令文档 2 简要说明 二 配置 config 1 配
  • minio上传文件报错io.minio.errors.InvalidResponseException: Non-XML response from server

    上传文件报错io minio errors InvalidResponseException Non XML response from server 开发中上传文件到minio遇到问题 上传小于1M的文件成功 上传大于1M的文件失败 检查
  • 《算法图解》第九章动态规划学习心得

    1 背包问题 动态规划先解决子问题 再逐步解决大问题 每个动态规划都从一个网格开始 背包问题的网格如下 网格最初是空的 动态规划就是逐步将网格填满 吉他行 第一个单元格表示背包的容量为1磅 吉他的重量也是1磅 这意味着它能装入背包 因此这个
  • list类型的用法(含列表合并)

    编程中对于链表的处理通常都是比较麻烦的 C 的STL库中提供了list类型 大大方便了我们对链表的处理 不熟悉的小伙伴们快来了解 一定能为你的编程带来益处 list是双向带头循环链表 不同于之前讲过的vector 它不支持随机访问 即下标访
  • python提取两个引号中的内容,怎样用 Python 提取不在双引号的内容?

    三叔2016 11 11 13 30 281楼 import re a Peter d 13tsddgjlsv gt gt bgeghg n desfegeivm x wb rhwrohjow dddeuvb n dwegjosnngwei
  • C语言中的静态函数

    关于C中的static类型的函数是与extern类型相对的 也就是说函数的调用方式并没有改变 只通过这个关键字影响了linker的行为 下面在具体说说他们的区别 extern都知道 是指该函数在整个工程中可见 而static是指只在当前文件
  • STL : vector 矢量容器

    目录 Vector Capacity Elements access Modifiers Allocator Non member Notice overloads Template specializations Vector inclu