stl容器vector笔记

news2025/1/13 10:27:11

Vector

  • 一、初始化
  • 二、常用方法
      • 1. 访问元素at()、下标、data()、front()、back()
      • 2. push_back()、pop_back()尾部增删元素
      • 3. insert()在pos前插入元素,返回插入位置
      • 4. erase()擦除元素,返回擦除元素后的元素位置
      • 5. clear()清空容器
      • 6. resize()改变容器元素个数
      • 7. swap()容器交换
      • 8. 容量

在这里插入图片描述


  • std::vector 是封装动态数组的顺序容器。
  • 头文件#include <vector>
  • 常见操作复杂度
    • 随机访问——常数 O(1)
    • 在末尾插入或移除元素——均摊常数 O(1)
    • 插入或移除元素——与到 vector 结尾的距离成线性 O(n)

一、初始化

  • 以int为例构造vector
vector<int> v1();					//空构造
vector<int> v2 = {1, 2, 3, 4, 5};	//存入1、2、3、4、5
vector<int> v3(4);			    //开辟4个空间,值默认为0
vector<int> v4(6,1);		    //6个值为1的元素
vector<int> v5(v4);		        //拷贝构造,复制v4
vector<int> v6(v2.begin()+2, arr4.end()); //存入3、4、5

  • assign函数给容器重新赋值,会清空容器内已有的元素
void assign( size_type count, const T& value );

template< class InputIt >  
void assign( InputIt first, InputIt last );

void assign(std::initializer_list<T> ilist);

二、常用方法

在这里插入图片描述


1. 访问元素at()、下标、data()、front()、back()

reference at( size_type pos );
const_reference at( size_type pos ) const;

reference operator[]( size_type pos );
const_reference operator[]( size_type pos ) const;

T* data() noexcept;
const T* data() const noexcept;

reference front();     //首元素
const_reference front() const;

reference back();     //尾元素
const_reference back() const;

2. push_back()、pop_back()尾部增删元素

void push_back( const T& value );
void push_back( T&& value );
void pop_back();

3. insert()在pos前插入元素,返回插入位置

iterator insert( const_iterator pos, const T& value );
iterator insert( const_iterator pos, T&& value );
iterator insert( const_iterator pos,size_type count, const T& value );
iterator insert( const_iterator pos, InputIt first, InputIt last );
iterator insert( const_iterator pos, std::initializer_list<T> ilist );

4. erase()擦除元素,返回擦除元素后的元素位置

iterator erase( iterator pos );
iterator erase( const_iterator pos );
iterator erase( iterator first, iterator last );
iterator erase( const_iterator first, const_iterator last );

5. clear()清空容器

void clear() noexcept;

6. resize()改变容器元素个数

  • 容器超过count的元素会被删除,不足的用默认值或value填充
void resize( size_type count );
void resize( size_type count, const value_type& value );

7. swap()容器交换

  • 将内容与 other 的交换。不在单个元素上调用任何移动、复制或交换操作。所有迭代器和引用保持合法。尾后迭代器被非法化。
void swap( vector& other );

8. 容量

bool empty() const noexcept; //判空
size_type size() const noexcept;   //返回元素个数
size_type max_size() const noexcept; //返回能容纳元素数目最大值
size_type capacity() const noexcept; //返回容器当前分配空间的元素数
void reserve( size_type new_cap ); //若new_cap大于当前的 capacity()则分配新存储空间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/651013.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言中函数返回数组(一维和二维)

文章目录 函数返回一维数组函数返回二维数组 C语言中函数返回数组是很重要的一种应用&#xff0c;有时候在程序中调用函数返回数组可以更容易的实现我们想要的某些操作&#xff0c;比如一次返回多个值&#xff0c;这篇文章带来的是C语言中函数返回一维数组和二维数组的例子。 函…

Python自动化测试框架我到底应该学哪一个?

企业中&#xff0c;自动化必定会演变成搭建测试框架&#xff0c;这是为什么呢&#xff1f; 可能有一些刚刚进入软件测试行业的朋友还不理解什么是测试框架&#xff0c;没关系&#xff0c;首先我们知道一点&#xff0c;为什么自动化会演变成搭建测试框架呢&#xff1f; 第一个…

Ribbon和 Nacos服务注册中心

✅作者简介&#xff1a;大家好&#xff0c;我是Cisyam&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Cisyam-Shark的博客 &#x1f49e;当前专栏&#xff1a; 微服务探索之旅 ✨特色专…

软件测试面试自己都不上心,就不要抱怨别人对你冷眼旁观

昨日表哥恳请帮他的学生投递一下开发岗的简历&#xff0c;举手之劳&#xff0c;这忙必须得帮。但当发来学生的简历后&#xff0c;我吐槽了“这简历平平无奇&#xff0c;没有任何亮点&#xff0c;如何令人另眼相看&#xff1f;”表哥说&#xff0c;学生经历不多&#xff0c;总不…

离散数学题目收集整理练习(期末过关进度20%)

✨博主&#xff1a;命运之光 &#x1f984;专栏&#xff1a;离散数学考前复习&#xff08;知识点题&#xff09; &#x1f353;专栏&#xff1a;概率论期末速成&#xff08;一套卷&#xff09; &#x1f433;专栏&#xff1a;数字电路考前复习 ✨博主的其他文章&#xff1a;点击…

一文看懂什么是广告联盟,未来可期吗?

日常学习一些行业内的相关基础知识&#xff0c;可以在工作中更好地理解业务。在互联网广告行业中&#xff0c;广告联盟是很重要的存在&#xff0c;我们今天一起来了解下什么是广告联盟吧。 文中GG联盟广告联盟 GG广告 一. 定义 GG联盟通指网络GG联盟&#xff0c;指集合中小网…

【链表复习】C++ 链表复习及题目解析 (3)

目录 剑指offer 中的链表题目 JZ6 从尾到头打印链表 JZ18 删除链表的结点 JZ24 反转链表 JZ25 合并两个排序的链表 JZ52 两个链表的第一个公共结点 JZ23 链表中环的入口结点 JZ22 链表中倒数第k 个结点 JZ35 复杂链表的复制 JZ76 删除链表中重复的结点 本次给大家带来…

用注解实现方法开关

一、自定义注解的基本使用 java.lang.annotation 提供了四种元注解&#xff0c;专门注解其他的注解&#xff08;在自定义注解的时候&#xff0c;需要使用到元注解&#xff09;&#xff1a; Documented – 注解是否将包含在JavaDoc中 Retention – 什么时候使用该注解 Target –…

【算法】动态规划-斐波那契模型

文章目录 结论斐波那契模型第 N 个泰波那契数三步问题使用最小花费爬楼梯**方法1&#xff1a;**以i位置为结尾....方法2&#xff1a;以i位置为起点.... 解码方法 结论 对于线性dp&#xff0c;一般是用经验题目要求来定义状态表示&#xff1a; 以某个位置为结尾…以某个位置为…

React 通过一个输入内容加入列表案例熟悉 Hook 基本使用

我们创建一个react项目 在src下创建components文件夹 在下面创建一个index.jsx index.jsx 参考代码如下 import React, { useState } from "react";const useInputValue (initialValue) > {const [value,setValue] useState(initialValue);return {value,onCha…

【2023,学点儿新Java-01】从查看本机 jdk版本 开始 | Java基础全程脉络图、Java工程师全程技术路线、Java职业晋升路线图

一个人把生命耗尽&#xff0c;应该是为了一些美好的东西&#xff0c;值得的东西&#xff0c;用蓬勃如烈火的生命力 去战胜一个又一个人生的悲剧&#xff0c;这本身就是人生的意义之一吧&#xff01; &#x1f3af;作者主页&#xff1a; 追光者♂&#x1f525; &#x1f338;个人…

Win10 系统专业版远程桌面如何才能多用户同时登录使用?

环境&#xff1a; Win10专业版19041 RDPWrap-v1.6.2 dell5493笔记本 问题描述&#xff1a; Win10 系统专业版远程桌面如何才能多用户同时登录使用&#xff1f; 解决方案&#xff1a; 安装RDPWrap 1.关闭remote desktop services服务 安装RDP之前&#xff0c;要先关闭re…

8年性能测试工程师告诉你,压力测试详解,如何做压力测试...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 什么是压力测试&a…

灯塔工厂PLC智慧边缘计算机嵌入式linux系统

随着工业物联网的发展&#xff0c;越来越多的企业开始将工业自动化设备接入到物联网平台&#xff0c;以实现设备远程监控、运维和管理。其中&#xff0c;PLC智能网关作为连接PLC和物联网平台的重要设备&#xff0c;发挥着至关重要的作用。本文将介绍PLC数据采集控制网关的功能和…

文心一言 VS 讯飞星火 VS chatgpt (42)-- 算法导论5.4 6题

六、假设将n个球投人 n 个箱子里&#xff0c;其中每次投球独立&#xff0c;并且每个球等可能落入任何箱子。空箱子的数目期望是多少?正好有一个球的箱子的数目期望是多少? 文心一言&#xff1a; 这是一个典型的概率问题。首先&#xff0c;我们可以通过简单的计算来理解问题…

【论文】YOLOv7运行train.py和test.py时,打印不出来计算量GFLOPs解决方法

目录 前提案例解决步骤运行方式打印效果 前提 我在AutoDL云服务器上&#xff0c;会运行失败&#xff0c;不晓得为啥&#xff0c;我感觉可能是CUDA版本的问题&#xff0c;CUDA版本低了就会没有那么深的计算量吧 AutoDL上&#xff08;显卡RTX3090&#xff0c;4GB&#xff09;安…

java的网络编程

一、网络编程的三要素 IP、端口号、协议。 特殊IP地址127.0.0.1&#xff0c;也可以是localhost&#xff0c;是回送地址也称回环地址&#xff0c;也称本机IP&#xff0c;永远只会寻找当前所在本机。 常见cmd命令&#xff1a; ipconfig:查看本机IP地址&#xff1b; ping:检查网络…

Innovus: dbGet 快速学习教程

dbGet是innovus/encounter工具自带的"database access command"命令中的一部分&#xff0c;它几乎可以用来获取设计相关的一切信息。 输入dbGet 按[Tab]键&#xff0c;能看到三个选项&#xff0c;分别是head / top /selected。这三个选项所代表的意义如下: head --…

ubuntu 22.04安装mysql 8.0与避坑指南

MySQL 是一个开源数据库管理系统&#xff0c;可作为流行的 LAMP&#xff08;Linux、Apache、MySQL、PHP/Python/Perl&#xff09;堆栈的一部分安装。 它实现了关系模型并使用结构化查询语言&#xff08; SQL&#xff09;来管理其数据。 本教程将介绍如何在 Ubuntu 22.04 服务器…

appium+python在Android端的环境配置

一、安装配置JDK 一、安装环境 1、本机系统&#xff1a;Windows 10&#xff08;64位&#xff09; 2、JDK版本&#xff1a;1.8&#xff08;64位&#xff09; 二、下载安装 1、JDK和JRE简介 Java环境分JDK和JRE &#xff0c;JDK就是Java Development Kit。简单的说JDK是面向…