news 2026/5/21 4:26:56

C++语法-vector

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++语法-vector

一.简介

  • vector 实现的是一个动态数组,即可以进行元素的插入和删除,在此过程中,vector 会动态调整所占用的内存空间,整个过程无需人工干预
  • vector 容器可以随着存储元素的增加,自行申请更多的存储空间

二.常用语法

1.创建容器

(1)vector < double >values; //创建存储double类型的vector容器
valuies.reserve(20);//增加容器容量,即20个元素
(2)vector< int > primes {1,2,3,4,5};//创建包含5个元素的vector容器;创建时制定元素个数和初始值
(3)vector< double > values(20);//创建容器时,指定元素个数
(4)创建容器时,圆括号中的2个参数,既可以是常量,也可是变量

intnum=20;doublevalue=1.0;vector<double>values(num,value);或者vector<double>values(5,1.0);

2.容器的大小和容量

(1)size() //返回实际元素的个数
(2)resize() //改变实际元素的个数
(3)reserve() //增加容器的容量
(4)empty()//判断容器是否为空,若为空返回true,否则返回false

  • size:当前存储的元素个数
  • capacity:容量指的是在不重新分配内存的情况下可以存储的元素的最大数量。vector容器中添加元素时,如果当前容量不足以容纳新元素,vector会自动分配更多的存储空间容纳新元素,这个过程为扩容。

3.数据访问

(1)data() //返回指向容器中首个元素的指针,通过该指针可以访问甚至修改容器中的元素
(2)begin()//返回指向容器中第一个元素的正向迭代器(即指向【首元素】的位置)
(3)end()//返回指向容器中最后一个元素所在位置后一个位置的正向迭代器(即指向【尾元素+1】的位置)
(4)rbegin()//返回指向最后一个元素的
反向迭代器

(5)rend()//返回指向第一个元素之前的反向迭代器
(6)at()//使用经过边界检查的索引访问元素 例如at(0)。 索引造成越界时,抛出std::out_of_range异常
(7)front()//返回第一个元素的引用
(8)back()//返回最后一个元素的引用

4.数据操作

(1)push_back(value) //在序列尾部添加元素
(2)pop_back() //移除序列尾部的元素
(3)insert(posion,value) //在指定的位置插入一个或多个元素 (position从0开始)
(4)iterator erase(pos) //移除一个或多个元素,pos 为指定被删除元素位置的迭代器,同时该函数会返回一个指向删除元素所在位置下一个位置的迭代器
(5)clear() //移除所有的元素,容器大小变为0
(6)swap() //交换两个容器的所有元素

5.访问容器中的数据方法

(1)容器名[n] n代表下标,从0开始。
(2)at(n) 索引造成越界时,抛出std::out_of_range异常。
(3)data()成员函数,返回指向容器中首个元素的指针,通过该指针可以访问甚至修改容器中的元素。
例如 *(vectors.data()+1) 代表容器中第二个元素的值

6.迭代器

  • 和普通指针使用相同
  • 使用方法:
    (1)容器类名::iterator迭代器名;
    (2)*迭代器名:表示迭代器指向的元素
#include<vector>#include<iostream>using namespace std;intmain(){vector<int>a{1,2,3,4,5}//传统方法 遍历容器元素for(inti=0;i<a.size();i++){cout<<a[i]<<" ";}//使用迭代器 遍历容器元素vector<int>::iterator it;for(it=a.begin();it!=a.end();it++))){cout<<*it<<" ";}}

三.demo

#include<iostream>#include<vector>usingnamespacestd;intmain(){cout<<"vector opt"<<endl;vector<char>test;test.push_back('T');//容器末尾添加元素test.push_back('E');test.push_back('S');test.push_back('T');intcount=test.size();//元素的个数cout<<"vector size:"<<count<<endl;intcapacity=test.capacity();//容器容量cout<<"capcity :"<<capacity<<endl;//访问容器中的元素cout<<"使用迭代器访问:";vector<char>::iterator it;//使用迭代器for(it=test.begin();it<test.end();it++){cout<<*it<<",";//*it表示迭代器指向的元素}cout<<endl;//使用容器名cout<<"使用容器名访问:";for(inti=0;i<test.size();i++){cout<<test[i]<<",";//容器名[n] 访问容器元素}cout<<endl;//使用at()cout<<"使用at():";for(inti=0;i<test.size();i++){cout<<test.at(i)<<",";//使用at(n) 访问容器元素}cout<<endl;//使用data()cout<<"使用data访问:";for(inti=0;i<test.size();i++){cout<<*(test.data()+i)<<",";//data() 访问容器元素}cout<<endl;//移除尾部数据test.pop_back();cout<<"last data:"<<test.at(test.size()-1)<<endl;//插入数据test.insert(test.begin(),'a');cout<<"first value:"<<test.at(0)<<endl;//删除数据test.erase(test.begin());cout<<"first value:"<<test.at(0)<<endl;cout<<"front value:"<<test.front()<<endl;//第一个元素的引用cout<<"back value:"<<test.back()<<endl;//最后一个元素的引用return0;}

四.运行效果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/21 3:46:19

【R Shiny高级优化指南】:掌握3类缓存组合策略,告别重复计算

第一章&#xff1a;R Shiny 的多模态缓存策略在构建高性能的 R Shiny 应用时&#xff0c;多模态缓存策略是优化响应速度与资源利用的关键手段。通过合理配置缓存机制&#xff0c;可以显著减少重复计算和数据加载开销&#xff0c;提升用户体验。缓存类型的选择 Shiny 支持多种缓…

作者头像 李华
网站建设 2026/5/21 3:46:11

如何用R语言设计高精度环境监测采样方案?一文讲透

第一章&#xff1a;环境监测采样设计的核心挑战在环境监测领域&#xff0c;采样设计是决定数据质量与分析结论可靠性的关键环节。不合理的采样策略可能导致数据偏差、资源浪费&#xff0c;甚至误导环境治理决策。面对复杂多变的自然系统&#xff0c;采样设计需综合考虑空间异质…

作者头像 李华
网站建设 2026/5/21 2:51:26

揭秘Docker MCP 网关负载均衡机制:5步实现无缝流量分发

第一章&#xff1a;揭秘Docker MCP 网关负载均衡的核心价值 在现代微服务架构中&#xff0c;Docker MCP&#xff08;Microservice Communication Platform&#xff09;网关作为流量入口的中枢组件&#xff0c;其内置的负载均衡机制发挥着至关重要的作用。通过智能分发请求到多个…

作者头像 李华
网站建设 2026/5/14 4:02:04

(Dify Tesseract 更新机制终极指南):构建高可用AI应用的基石

第一章&#xff1a;Dify Tesseract 更新机制概述Dify Tesseract 是一个面向低代码 AI 应用开发平台的核心模块&#xff0c;其更新机制设计旨在确保系统在高可用性与数据一致性之间取得平衡。该机制通过版本快照、差量同步与自动回滚策略&#xff0c;实现应用配置与模型逻辑的平…

作者头像 李华
网站建设 2026/5/18 21:21:51

如何在7天内掌握R语言代谢组分析?资深生信专家的进阶路线图曝光

第一章&#xff1a;R语言代谢组分析的入门与核心概念代谢组学旨在系统性研究生物体内所有小分子代谢物的变化规律&#xff0c;是揭示生理与病理机制的重要手段。R语言凭借其强大的统计分析与可视化能力&#xff0c;成为处理代谢组数据的首选工具之一。通过R&#xff0c;用户可完…

作者头像 李华
网站建设 2026/5/20 20:14:38

【环境监测R语言实战指南】:掌握生态风险评估的7大核心技巧

第一章&#xff1a;R语言在环境监测中的生态风险评估概述R语言作为一门强大的统计计算与数据可视化工具&#xff0c;已被广泛应用于环境科学领域&#xff0c;尤其在生态风险评估中展现出卓越的数据处理能力。其丰富的扩展包生态系统&#xff0c;如sp, raster, sf和ggplot2&…

作者头像 李华