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