c++ stl 之vector使用

news2024/12/24 2:40:28

  参考:https://www.runoob.com/cplusplus/cpp-stl-tutorial.html

“C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。

C++ 标准模板库的核心包括以下三个组件:

组件描述
容器(container)
容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。
算法(algorithms)
算法作用于容器。它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。
迭代器(iterators)迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。

向量容器(一个 C++ 标准的模板),它与数组十分相似,唯一不同的是,向量在需要扩展大小的时候,会自动处理它自己的存储需求."

下面是使用的demo:

void tVector()
{
    //创建一个vector 对象,里面存储数据的类型时int
    vector<int> v;

    v.push_back(1);   //在向量末尾插入1
    v.push_back(2);   //在向量末尾插入2
    v.push_back(3);   //在向量末尾插入3
    v.pop_back();     //把向量末尾的3删除
    v.push_back(12);  //在向量末尾插入12
    v.push_back(10);  //在向量末尾插入10

    //判断向量是否为空
    cout << v.empty()<<endl;

    //获取向量当前大小
    cout <<"vector size:" <<v.size() << endl;
    
    //获取向量当前的容量,即在不扩容的情况下可以存放数据的个数
    cout << "vector capacity:" << v.capacity() << endl;
    

    // 使用迭代器 iterator 访问值
    vector<int>::iterator iv = v.begin();
    while (iv != v.end()) {
        cout << "value of v = " << *iv << endl;
        iv++;
    }
    iv = v.begin();
    v.erase(iv);//删除第一个数据

    
    v.insert(v.begin()+2, 5);  //从向量开始的位置,偏移两个单位,插入5
    v.insert(v.begin() + 4, 90);    //从向量开始的位置,偏移四个单位,插入90
    v.insert(v.end(), 123);
    v.push_back(101);   //在往向量中插入数据的过程中,如果发现空间不够,向量内部会自动进行扩容
    v.push_back(102);
    v.push_back(103);
    v.push_back(104);

    //从向量开始的位置,偏移四个单位,用100替换其值
    v.emplace(v.begin() + 4, 100);

    //设置保留空间,会改变capacity()的返回值
    v.reserve(15);

    //获取向量当前大小
    cout << "vector size:" << v.size() << endl;

    //获取向量当前的容量
    cout << "vector capacity:" << v.capacity() << endl;

    //获取第二个
    cout<<"data at(2) is "<<v.at(2)<<endl;

    //获取最前面的一个
    cout<<"data front() is "<<v.front()<<endl;

    //获取最后端的一个
    cout <<"data back() is "<<v.back() << endl;

    iv = v.begin();
    while (iv != v.end()) {
        cout << "value of v = " << *iv << endl;
        iv++;
    }


    cout <<"vector size is "<< v.size() << endl;

    cout << endl;

}

结果:

  当然,向量中除了可以存放int类型的数据,其他的像char,DWORD,std::string或者自定义的结构体都是可以的。

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

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

相关文章

特征向量可视化01_tsne_pca

在学习机器学习或深度学习基础知识的同时训练模型是一个非常有指导性的过程。该数据集易于理解且格式适当&#xff0c;可供您使用。然而&#xff0c;当您走进现实世界并尝试解决行业或现实生活中的挑战时&#xff0c;数据集如果一开始就不存在&#xff0c;通常会很混乱。理解为…

uniapp怎么把px转换成对应手机型号的rpx

首先获取系统手机屏幕的宽度系统信息的概念 | uni-app官网&#xff0c;然后根据公式转换 rpx 750*元素 B 在设计稿上的宽度为 多少px/手机屏幕的宽度 详见&#xff1a;CSS 支持 | uni-app官网 如下为把宽度为1px的转成对应手机型号的rpx uni.getSystemInfo({success(res) {co…

网络营销VS传统营销有什么区别?

随着互联网的普及和发展&#xff0c;网络营销已经成为企业营销的重要手段之一。相比传统营销&#xff0c;网络营销具有更多的优势和特点。本文将从市场环境、营销手段、成本效益等方面&#xff0c;分析网络营销与传统营销的区别。#网络营销# 一、市场环境不同 传统营销主要是通…

华为OD机试真题 Python 实现【查找单入口空闲区域】【2022 Q4 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出3、说明 一、题目描述 给定一个 m x n 的矩阵&#xff0c;由若干字符 ‘X’ 和 ‘O’构成&#xff0c;’X’表示该处已被占据&#xff0c;’O’表示该处空闲&#xff0c;请…

[pyqt5]动态加载ui文件并给菜单的一个子菜单添加触发事件

场景&#xff1a;大家都知道如果直接将ui文件转成py文件后&#xff0c;如果产品经理要你加一些界面控件&#xff0c;你就得改转换后代码这样很麻烦&#xff0c;我们可以直接加载ui文件&#xff0c;然后编写触发事件&#xff0c;因此写了一个简单案例&#xff0c;证明切实可行&a…

微服务:Springboot集成Hystrix实现熔断、降级、隔离

文章目录 前言知识积累Springboot集成Hystrix1、maven依赖引入2、application开启feign的hystrix支持&#xff08;客户端配置限流降级熔断&#xff09;3、入口类增加EnableFeignClients EnableHystrix 开启feign与hystrix4、feign调用增加降级方法服务端配置限流降级熔断(选择使…

stm32 使用keil无实物(软件)仿真,虚拟串口通讯

准备 1.keil 2.vspd虚拟串口 3.sscom串口助手 4.CubeMX //哪里报错no ‘read‘ permission&#xff0c;把哪里map一下 map 0x40000000, 0x400077FF read write // APB1 map 0x40010000, 0x40014BFF read write // APB2 map 0x40020000, 0x4007FFFF read write …

​​国风写实虚拟人频“营业”,塑造国潮文化元宇宙入口

近几年&#xff0c;随着时代话语权逐渐递交给Z世代的年轻人&#xff0c;文化自信成为了主流审美&#xff0c;国风虚拟人激发了年轻人心中的民族文化自豪感。 国风虚拟人谷小雨频营业&#xff0c;发布了“中文之美”虚拟人动画&#xff0c;穿越古今四时感受“雨”字流转之美&am…

MMdetection框架速成系列 第04部分:配置文件详细解析+文件结构剖析+Config类核心实现

&#x1f697;&#x1f697;&#x1f697;&#x1f697;&#x1f697;&#x1f697;&#x1f697;&#x1f697;&#x1f697;&#x1f697;&#x1f697;&#x1f697;&#x1f697;&#x1f697;&#x1f697;&#x1f697;&#x1f697; MMdetection框架速成系列 MMdetect…

简单回顾一下kafka的学习

简单回顾一下kafka的学习 WhatBrokerControllerPartitionReplicationTopicProducerConsumer Why为什么有多个分区为什么有副本 How搭建集群Java简单使用ProducerConsumeroffset提交方式自动提交 - 默认手动提交 消费者poll消息的过程指定分区消费消息回溯消费指定offset消费新消…

Firefly

Firefly(流萤): 中文对话式大语言模型在本文中&#xff0c;笔者将介绍关于Firefly&#xff08;流萤&#xff09;模型的工作&#xff0c;一个中文对话式大语言模型。https://mp.weixin.qq.com/s/TX7wj8IzD_EaMTvk0bjRtA一个支持中文的176B开源基础模型BLOOM&#xff1a;从数据源…

git merge 和git rebase的区别

文章目录 1. 概念2. git merge2.1. 示例 3. git rebase3.1. 示例 4. 总结 1. 概念 在Git版本控制系统中&#xff0c;有两种方式可以将一个分支的更改合并到另一个分支&#xff1a;git merge 和 git rebase。虽然它们都可以完成相同的任务&#xff0c;但它们的实现方式有所不同…

faster-rcnn.pytorch项目环境配置(从0到1)

faster-rcnn.pytorch项目环境配置&#xff08;从0到1&#xff09; 其实pytorch版本和CUDA版本高&#xff0c;都没有关系&#xff01;&#xff01;&#xff01;都可以适配&#xff0c;显卡30系、20系都没关系&#xff0c;都可以用&#xff01; 下面我将在AutoDL平台上&#xf…

Mapbox 实现热力图教程

热力图在 maobox 中属于专题图的一种,他通过点的颜色和权重 来渲染点和点周围的指标情况。本文来跟大家分享一下如何使用 maobox 实现热力图的功能。 我们以全国十大名茶产区的温度指标为例,来做一个像上图这样的效果, 首先要有相关的点数据: var tentea = {type: &qu…

某制药CDMO头部企业IPD变革项目启动会顺利召开

近日&#xff0c;某制药CDMO头部企业IPD流程变革项目在重庆顺利召开。为进一步优化公司研发管理体系、梳理正向研发理念及文化、培养专业人才&#xff0c;经过深入调研后&#xff0c;某制药CDMO头部企业聘请科济管线首席顾问江新安教授及其团队&#xff0c;为该企业作IPD项目变…

EMAS热修复Sophix适配App加固的技术方案

一、问题描述 某阿里云EMAS客户的APK基于最新的线上版本发布了第十个补丁&#xff0c;发布1小时后在崩溃检测平台收集到crash日志&#xff0c;并收到用户反馈&#xff1a;部分手机上的APP会闪退。 客户开发人员紧急上报EMAS技术支持&#xff0c;双方沟通后初步判断是补丁加载…

使用rewriteBatchedStatements属性优化Mybatis-Plus批量插入数据

前言 由于项目是使用MyBatis-Plus开发的&#xff0c;用起来也确实比较方便&#xff0c;尤其是service层封装好的一些通用的增删改查方法&#xff0c;省去了不少sql语句的书写&#xff0c;但是在开发过程中&#xff0c;我也发现MyBatis-Plus的saveBatch批量插入方法针对MySQL数…

MAYA横纵拉窗帘

设置移动动画 向上拉帘

File System Access API 浅析

前言 最近在用python&#xff08;tkinter GUI库&#xff09;做一个小工具时&#xff0c;选择文件后可以获得其真实路径。而前端&#xff08;浏览器&#xff09;出于安全和性能等方面的考虑&#xff0c;对文件的操作是非常局限的。 在HTML5标准的File API之前&#xff0c;纯前…

【Redis】高可用之复制(replica)

本文是Redis系列第4篇&#xff0c;前3篇欢迎移步 【Redis】不卡壳的 Redis 学习之路&#xff1a;从十大数据类型开始入手_AQin1012的博客-CSDN博客关于Redis的数据类型&#xff0c;各个文章总有些小不同&#xff0c;我们这里讨论的是Redis 7.0&#xff0c;为确保准确&#xff…