当前位置: 首页 > 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.xdnf.cn/news/1068571.html

相关文章:

  • 7.Spring框架
  • TensorFlow Lite (TFLite) 和 PyTorch Mobile模型介绍1
  • 什么是功能测试和非功能测试?
  • Azure 托管 Redis 已正式发布
  • 打造属于你的AI智能体,从数据开始 —— 使用 Bright Data MCP+Trae快速构建垂直智能体
  • 【Elasticsearch】es初识,在项目架构中的用途,与mysql和kafka的配合使用,
  • linux安装docker
  • LE AUDIO---Chapter 2. The Bluetooth® LE Audio architecture
  • 记一次AWS 中RDS优化费用使用的案例
  • 【学习笔记】3.3 Decoder-Only PLM
  • 【目标检测】平均精度(AP)与均值平均精度(mAP)计算详解
  • 从数据到决策:UI前端如何利用数字孪生技术提升管理效率?
  • list的使用和模拟实现
  • 探索解析C++ STL中的 list:双向链表的高效实现与迭代器
  • Flutter MobX 响应式原理与实战详解
  • OpenLayers 上传Shapefile文件
  • docker start mysql失败,解决方案
  • 【猜你需要】使用了Git LFS还是无法上传文件?文件过大?
  • 打造丝滑的Android应用:LiveData完全教程
  • 【启发式算法】RRT*算法详细介绍(Python)
  • Oracle 数据库查询:多表查询
  • 测试平台ui自动化demo说明
  • [论文阅读] 人工智能 + 软件工程 | 探秘LLM软件代理:从黑箱决策到透明轨迹分析
  • 创客匠人 AI 赋能:创始人 IP 打造的效率革命与信任重构
  • 数的范围(连续数字边界)
  • 以太网基础②RGMII 与 GMII 转换电路设计
  • Spring Boot 系统开发:打造高效、稳定、可扩展的企业级应用
  • 学习日记-spring-day37-6.25
  • SpringCloud系列(35)--使用HystrixDashboard进行服务监控
  • OSS跨区域复制灾备方案:华东1到华南1的数据同步与故障切换演练