当前位置: 首页 > 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,表示程序正常结束

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

相关文章:

  • 网站开发 app域名搜索引擎
  • 查看邮箱注册的网站百度seo怎么收费
  • 最大的房产网站域名注册新网
  • 精通网站开发做网站公司
  • 什么招聘网最好找工作深圳网站seo外包公司哪家好
  • 怎么查看一个网站有没有做推广最好的优化公司
  • 《从0到1:C/C++音视频开发自学指南》
  • 多个 Job 并发运行时共享配置文件导致上下文污染,固化 Jenkins Job 上下文
  • 家用存储怎么选?NAS vS 硬盘柜,备份游戏素材与照片谁更合适?
  • vue2 使用el-form中el-form-item单独绑定rules不生效问题
  • 51c嵌入式~CAN~合集2
  • 学习日记-spring-day37-6.25
  • C++11原子操作:从入门到精通
  • 西游记12:观世音菩萨送袈裟和禅杖;菩萨现身,教导大乘佛法三藏;御弟圣僧;宁恋本乡一捻(niǎn)土,莫爱他乡万两金。
  • 基于Hp感染的慢性胃炎居家管理小程序的设计与实现(消息震动)
  • DuDuTalk | 武汉赛思云科技有限公司通过武汉市人工智能企业认定!
  • 掌握CIS基准合规性:通过自动化简化网络安全
  • sentinel 自定义 dashboard 用户名密码
  • 【网站内容安全检测】之1:获取网站所有链接sitemap数据
  • 5.1 基于livox_ros_driver2运行MID360demo
  • 基于LangChat搭建RAG与Function Call结合的聊天机器人方案
  • 卷积神经网络(Convolutional Neural Network, CNN)
  • 1688商品发布API:自动化上架与信息同步
  • 多传感器标定简介
  • 快速排序算法
  • 设计模式精讲 Day 13:责任链模式(Chain of Responsibility Pattern)