当前位置: 首页 > news >正文

(C++)vector数组相关基础用法(C++教程)(STL库基础教程)

源代码:

#include <iostream>
#include <vector>
#include <string>
using namespace std;int main(){char a;int b;int c;vector <char> numbers;cout<<"请输入一组字符(按下'#'结束):\n";while(1){cin>>a;if(a=='#'){break;}numbers.push_back(a);}cout<<"数组元素:";for(char num:numbers){cout<<num<<' ';}cout<<endl<<"请输入你要查询第几个元素:";cin>>b;cout<<"第"<<b<<"个数的查询结果是:"<<numbers[b]<<endl;cout<<"请输入你要删除第几个元素:";cin>>c;if(c>=0 && c < numbers.size()){numbers.erase(numbers.begin()+c);cout<<"删除成功 删除后的数组:";for(char num:numbers){cout<<num<<' ';}}else{cout<<"\n删除失败,不在数组范围内";}return 0;
}

代码详细解析

这段代码实现了一个简单的字符数组管理程序,允许用户输入一组字符,然后查询或删除特定位置的元素。下面我将对代码进行详细解析:

1. 头文件和命名空间

#include <iostream>
#include <vector>
#include <string>
using namespace std;
  • 引入了三个必要的头文件:
    • iostream:用于输入输出操作
    • vector:用于使用动态数组容器
    • string:用于字符串处理(虽然在这段代码中没有直接使用)
  • using namespace std; 允许直接使用标准库中的类和函数,而不需要加 std:: 前缀

2. 主函数和变量声明

int main(){char a;int b;int c;vector <char> numbers;
  • 声明了三个变量:
    • a:用于临时存储用户输入的字符
    • b:用于存储用户想要查询的元素索引
    • c:用于存储用户想要删除的元素索引
  • 创建了一个 vector<char> 类型的动态数组 numbers,用于存储用户输入的字符

3. 字符输入部分

    cout<<"请输入一组字符(按下'#'结束):\n";while(1){cin>>a;if(a=='#'){break;}numbers.push_back(a);}
  • 提示用户输入一组字符,并说明按 # 结束输入
  • 使用无限循环 while(1) 持续读取用户输入
  • 每次读取一个字符到变量 a 中
  • 检查读取的字符是否为 #,如果是则使用 break 语句跳出循环
  • 如果不是 #,则将字符添加到 numbers 数组的末尾(使用 push_back 方法)

4. 显示数组元素

    cout<<"数组元素:";for(char num:numbers){cout<<num<<' ';}
  • 输出提示信息 "数组元素:"
  • 使用 C++11 引入的范围 for 循环遍历 numbers 数组中的每个元素
  • 对于每个元素,输出该字符后跟一个空格

5. 查询指定位置的元素

    cout<<endl<<"请输入你要查询第几个元素:";cin>>b;cout<<"第"<<b<<"个数的查询结果是:"<<numbers[b]<<endl;
  • 提示用户输入想要查询的元素位置(第几个元素)
  • 读取用户输入的位置到变量 b 中
  • 直接通过索引访问 numbers 数组中的元素并输出结果
    • 注意:这里没有检查索引是否越界,如果用户输入的索引超出数组范围,会导致未定义行为

6. 删除指定位置的元素

    cout<<"请输入你要删除第几个元素:";cin>>c;if(c>=0 && c < numbers.size()){numbers.erase(numbers.begin()+c);cout<<"删除成功 删除后的数组:";for(char num:numbers){cout<<num<<' ';}}else{cout<<"\n删除失败,不在数组范围内";}
  • 提示用户输入想要删除的元素位置
  • 读取用户输入的位置到变量 c 中
  • 进行索引有效性检查:
    • 如果索引 c 在有效范围内(0 到 numbers.size()-1),则执行删除操作
      • 使用 erase 方法删除指定位置的元素
      • numbers.begin()+c 计算出指向要删除元素的迭代器
      • 输出删除成功的消息,并显示删除后的数组元素
    • 如果索引无效,则输出删除失败的消息

7. 返回值

    return 0;
}
  • 主函数返回 0,表示程序正常结束

注:该代码是本人自己所写,可能不够好,不够简便,欢迎大家指出我的不足之处。如果遇见看不懂的地方,可以在评论区打出来,进行讨论,或者联系我。上述内容全是我自己理解的,如果你有别的想法,或者认为我的理解不对,欢迎指出!!!如果可以,可以点一个免费的赞支持一下吗?谢谢各位彦祖亦菲!!!!!

http://www.lryc.cn/news/575207.html

相关文章:

  • MiniMax-M1混合MoE大语言模型(本地运行和私有化搭建)
  • 数据结构 顺序表与链表
  • 深入学习入门--(一)前备知识
  • C++11原子操作:从入门到精通
  • 从数据到决策:UI前端如何利用数字孪生技术提升管理效率?
  • Webpack 构建过程详解
  • Web层注解
  • python学习笔记(深度学习)
  • FPGA基础 -- Verilog 格雷码(Gray Code)计数器设计与原理解析
  • 【网站内容安全检测】之3:获取所有外部域名访问后图像
  • ABP VNext + Ocelot API 网关:微服务统一入口与安全策略
  • Boosting:从理论到实践——集成学习中的偏差征服者
  • webman 利用tcp 做服务端 对接物联网
  • 机器学习×第十五卷:集成学习下篇——她开始构建每一轮更接近你的贴靠路径(XGBoost)
  • 基于STM32的个人健康助手的设计
  • Containerd 容器技术
  • 基于Hp感染的慢性胃炎居家管理小程序的设计与实现(消息震动)
  • LVS-DR负载均衡群集深度实践:高性能架构设计与排障指南
  • 鸿蒙OpenHarmony[Disassembler反汇编工具]ArkTS运编译工具链
  • vue3递归组件的使用
  • LVS-NAT负载均衡群集实战:原理、部署与问题排查
  • Vue计算属性与监视属性
  • 机器人 “离线觉醒” ? 摆脱人类“控制”!Google DeepMind 优化 AI 让机器人断网不断智!
  • spring项目启动sheel脚本
  • 如何打造Apache Top-Level开源时序数据库IoTDB
  • 北斗导航 | 基于CNN-LSTM-PSO算法的接收机自主完好性监测算法
  • 服务器开放端口如何设置,本地内网开通应用端口让外网访问连接步骤
  • Fisco Bcos学习 - 控制台搭建和基本使用
  • 在ASP.NET Core WebApi中使用标识框架(Identity)
  • 网络安全漏洞扫描是什么?如何识别目标进行扫描?