c++ std::vector介绍

std::vector 是C++标准库中的一个容器,提供了动态数组的功能。下面列出了一些 std::vector 类常用的方法:

  1. 构造函数和析构函数

    • vector():构造一个空的向量。
    • vector(size_type n):构造一个包含 n 个元素的向量,每个元素都使用默认构造函数进行初始化。
    • vector(size_type n, const T& val):构造一个包含 n 个元素的向量,每个元素都初始化为 val 的副本。
    • vector(const vector& other):拷贝构造函数,构造一个向量,其元素是另一个向量 other 的副本。
    • ~vector():析构函数,释放向量所占用的内存。
  2. 赋值和清空操作

    • operator=:赋值运算符,用于将一个向量的内容复制到另一个向量。
    • assign:用于将新内容替换现有内容。
    • clear():清空向量,删除所有元素。
  3. 元素访问

    • operator[]:通过索引访问向量中的元素。
    • at():通过索引访问向量中的元素,提供边界检查。
    • front():返回第一个元素的引用。
    • back():返回最后一个元素的引用。
    • data():返回指向向量中数据的指针。
  4. 迭代器

    • begin():返回指向第一个元素的迭代器。
    • end():返回指向尾元素的下一个位置的迭代器。
  5. 大小和容量

    • size():返回向量中的元素数。
    • max_size():返回向量可能包含的最大元素数。
    • capacity():返回向量当前可容纳的元素数。
    • resize(size_type n):改变向量的大小为 n。
    • reserve(size_type n):请求向量容量至少达到 n。
  6. 修改向量

    • push_back(const T& val):在向量末尾添加一个元素。
    • pop_back():删除向量末尾的元素。
    • insert(iterator position, const T& val):在指定位置插入一个元素。
    • erase(iterator position):删除指定位置的元素。
    • swap(vector& other):交换两个向量的内容。
    • emplace:在指定位置就地构造一个元素。
  7. 查找和排序

    • find():查找指定值的第一个出现位置。
    • rfind():查找指定值的最后一个出现位置。
    • sort():对向量进行排序。
#include <iostream>
#include <vector>
#include <algorithm> // 包含 sort 函数int main() {// 构造函数示例std::vector<int> vec1; // 创建一个空向量std::vector<int> vec2(5); // 创建一个包含5个元素的向量,元素值为默认值std::vector<int> vec3(3, 10); // 创建一个包含3个元素的向量,每个元素的值都为10std::vector<int> vec4 = {1, 2, 3, 4, 5}; // 使用初始化列表创建向量// 访问元素示例std::cout << "First element of vec4: " << vec4[0] << std::endl;std::cout << "Second element of vec4: " << vec4.at(1) << std::endl;std::cout << "Last element of vec4: " << vec4.back() << std::endl;// 修改向量示例vec4.push_back(6); // 在向量末尾添加元素vec4.pop_back(); // 删除向量末尾的元素vec4.insert(vec4.begin() + 2, 7); // 在指定位置插入元素vec4.erase(vec4.begin() + 3); // 删除指定位置的元素vec4.resize(8); // 改变向量的大小为8vec4.clear(); // 清空向量// 迭代器示例std::vector<int> vec5 = {5, 7, 8, 0, 3};for (auto it = vec5.begin(); it != vec5.end(); ++it) {std::cout << *it << " ";}std::cout << std::endl;// 使用 find 函数查找元素auto it = std::find(vec5.begin(), vec5.end(), 3);if (it != vec5.end()) {std::cout << "Element 3 found at position: " << it - vec5.begin() << std::endl;} else {std::cout << "Element 3 not found." << std::endl;}// 排序:使用sort方法, 默认升序规则std::sort(vec5.begin(), vec5.end());std::cout << "vec5 排序" << std::endl;for (auto it = vec5.begin(); it != vec5.end(); ++it) {std::cout << *it << " ";}// 大小和容量示例std::cout << "Size of vec5: " << vec5.size() << std::endl;std::cout << "Capacity of vec5: " << vec5.capacity() << std::endl;// 赋值和交换示例std::vector<int> vec6 = {1, 2, 3};std::vector<int> vec7 = {4, 5, 6};vec6 = vec7; // 使用赋值运算符将一个向量的内容复制到另一个向量vec6.swap(vec7); // 交换两个向量的内容return 0;
}

参考:

https://en.cppreference.com/w/cpp/container/vector​​​​​​​

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

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

相关文章

HTML快速入门

目录 一、HTML基础 1、HTML是什么&#xff1f; 2、认识 HTML 标签 3、HTML文件的基本结构 二、HTML快速开发 三、HTML常见标签 1、标题标签&#xff1a;h1~h6 2、段落标签&#xff1a;p 3、换行标签&#xff1a;br 4、图片标签&#xff1a;img 5、超链接&#xff1a…

Python单元测试框架—pytest常用测试报告类型

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 先前博客有介绍pytest测试框架的安装及使用&#xff0c;现在来聊…

学习 GitHub 风格的 Markdown 语法和格式化 - 带有示例

Markdown 是一种轻量级、开源、易读易写的文本格式化方法&#xff0c;你可以在任何 IDE 或编辑器中将其作为纯文本使用。 在 GitHub 上写作时&#xff0c;你可以使用 Markdown 语法和 HTML 元素来扩展 Markdown 的功能。你可以在 GitHub 的各个地方使用 Markdown 语法&#xf…

Python赋能AI数据分析开启人工智能新时代

文章目录 一、Python是办公自动化的重要工具二、Python是提升职场竞争力的利器三、Python是企业数字化的重要平台四、Python是AI发展的重要通道之一《编程菜鸟学Python数据分析》编辑推荐内容简介作者简介目录前言为什么要写这本书读者对象如何阅读本书 随着我国企业数字化和信…

运动听歌哪款耳机靠谱?精选五款热门开放式耳机

随着人们对运动健康的重视&#xff0c;越来越多的运动爱好者开始关注如何在运动中享受音乐。开放式蓝牙耳机凭借其独特的设计&#xff0c;成为了户外运动的理想选择。它不仅让你在运动时能够清晰听到周围环境的声音&#xff0c;保持警觉&#xff0c;还能让你在需要时与他人轻松…

python项目练习——22、人脸识别软件

功能分析: 人脸检测: 识别图像或视频中的人脸,并标记出人脸的位置和边界框。 人脸识别: 识别人脸的身份或特征,通常使用已知的人脸数据库进行训练,然后在新的图像或视频中识别出人脸并匹配到相应的身份。 表情识别: 识别人脸的表情,如高兴、悲伤、愤怒等,并给出相应…

skynet中newservice和uniqueservice的区别

先上uniqueservice代码 function skynet.uniqueservice(global, ...)if global true thenreturn assert(skynet.call(".service", "lua", "GLAUNCH", ...))elsereturn assert(skynet.call(".service", "lua", "LAUNCH…

Beamer使用

Step00 准备工作 申请Overleaf的账号&#xff0c;登录&#xff0c;新建一个空白项目。 点击左上角Menu&#xff0c;在菜单中找到complier&#xff0c;选中XeLatex。 Step01 一个Beamer框架 在main.tax中,添加下面的内容: % 导入必要的LaTeX包 \documentclass{beamer} % 使…

CentOS 7开机启动过程,引导和服务,密码的修改

开机启动过程&#xff1a; 引导过程&#xff1a;1.开机自检(BIOS)->2.MBR引导->GRUB菜单->加载内核kernel->systemd进程初始化 程序&#xff1a;执行特定任务的一串代码&#xff0c;静态&#xff0c;存在硬盘中。 进程&#xff1a;运行中的程序叫进程&#xff0…

Django之rest_framework(一)

一、请求和响应对象介绍 REST framework引入了2个新的对象:Request和Response 1.1、Request rest_framework.request.Request 该对象扩展了常规的HttpRequest ,增加了对REST框架灵活的请求解析和请求认证的支持 官网:Requests - Django REST framework 主要属性: data 这…

Oracle 数据库全表扫描的4种优化方法(DB)

全表扫描的工作是扫描高水位一下所有的数据块。 这里就有一个问题&#xff0c;什么是高水位线。高水位的标志存在表头。 该数据块以后都是崭新未格式化的数据块&#xff0c;高水位的目的有二。它是全表扫描的 终点&#xff0c;并行插入的起点&#xff01; 优化全表扫描的办法有…

类和对象(拷贝构造函数)

目录 拷贝构造函数 特征 结论&#xff1a; 拷贝构造函数 拷贝构造函数&#xff1a;只有单个形参&#xff0c;该形参是对本类类型对象的引用(一般常用const修饰)&#xff0c;在用已存 在的类类型对象创建新对象时由编译器自动调用。 特征 拷贝构造函数也是特殊的成员函数&…

AD7685BRMZRL7 16位 2.3V 低功耗模数转换器芯片 ADI

AD7685BRMZRL7是一款由ADI&#xff08;亚德诺&#xff09;公司生产的模数转换器&#xff08;ADC&#xff09;芯片。该芯片的主要功能是将模拟信号转换为数字信号&#xff0c;以便在数字系统中处理. AD7685BRMZRL7 规格信息&#xff1a; 制造商:Analog Devices Inc. 产品种类:模…

【SpringBoot】获取参数

获取参数 传递单个参数传递多个参数传递对象后端参数重命名传递数组传递 json 数据获取 URL 中参数上传文件获取 cookie 和 session获取cookie获取session 传递单个参数 RequestMapping("/user") RestController public class UserController {// 传递单个参数Reque…

实现自动打包py及替换pyinstaller --add-data参数的方法

2024年了&#xff0c;PyInstaller已经来到了6.5.0版本&#xff0c;可我还是不会用它那个--add-data的方法&#xff0c;度了几圈试了试&#xff0c;始终不&#xff08;行&#xff09;如&#xff08;不&#xff09;意&#xff08;通&#xff09;&#xff0c;就是没能把附加文件&a…

ActiveMQ 03 整合SpringBoot

Active MQ 03 整合SpringBoot 配置文件 POM <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&qu…

红色文化展馆3D线上互动展览推动党建创新发展

实现现代化是世界各国人民的共同追求。在追求现代化的艰苦卓绝奋斗中&#xff0c;我们党领导人民不仅创造了世所罕见的经济快速发展和社会长期稳定两大奇迹&#xff0c;而且成功走出了中国式现代化道路&#xff0c;创造了人类文明新形态。对党建学习也应该与时俱进&#xff0c;…

c语言多功能计算软件170

定制魏&#xff1a;QTWZPW&#xff0c;获取更多源码等 目录 题目 要求 主要代码片段 题目 设计一个计算器软件&#xff0c;具备如下功能提示界面。 要求 设计出界面&#xff0c;注意界面名称最后为自己的姓名&#xff1b;&#xff08;20分&#xff09;能够实现加、减、乘、…

Vector部分底层源码解析

JDK版本为1.8.0_271&#xff0c;Vector底层也是使用object数组&#xff0c;但使用synchronized 关键字来确保线程安全&#xff0c;但效率比ArrayList低&#xff0c;比较少见。这里以插入删除元素为例&#xff1a; //属性 protected Object[] elementData; protected int eleme…

Linux之bpfjit(2)使用分析和mini-tcpdump实现

Linux之bpfjit(2)使用分析和mini-tcpdump实现 Author: Once Day Date: 2024年4月13日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可以参考专栏&#xff1a;…