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

发布于:2025-06-26 ⋅ 阅读:(16) ⋅ 点赞:(0)

源代码:

#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,表示程序正常结束

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


网站公告

今日签到

点亮在社区的每一天
去签到