C++ STL之vector的简单使用
Vector是c++提供的容器之一,可以很好的扩展。除此之外,提供了一些函数。
本篇文章将常用的函数进行了使用,利用switch组成了一个菜单,具有尾部扩张 、插入、删除、排序、显示 、修改等功能。
适合初学者。
代码:
/*********************
vector
Author:YuBo
Date:2018/1/23
**********************/
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> v; //向量
void menu()
{
cout<<"*********vector的使用************"<<endl;
cout<<"*****1.尾部扩张 2.插入**********"<<endl;
cout<<"*****3.删除 4.排序**********"<<endl;
cout<<"*****5.显示 6.修改**********"<<endl;
cout<<"*****7.退出 "<<endl;
}
void Add()
{
int temp;int N;
cout<<"请输入你要输入的整数个数:"<<endl;
cin>>N;
cout<<"请输入"<<N<<"个整数(空格分割,换行结束):"<<endl;
for(int i=0;i<N;i++)
{
cin>>temp;
v.push_back(temp);
}
}
void Insert()
{
int place,num;
cout<<"请输入从第几个元素前插入(首元素位置为0):"<<endl;
cin>>place;
cout<<"请输入要插入的一个整数:"<<endl;
cin>>num;
v.insert(v.begin()+place,num);
}
void Delete()
{
int i;int place;int from,to;
cout<<"*******1.删除1个 2.删除部分 3.全部清除********"<<endl;
cout<<"请输入菜单号:"<<endl;
cin>>i;
switch(i)
{
case 1:{
cout<<"请输入要删除第几个元素(首元素为0):"<<endl;
cin>>place;
if(place<0||v.size()<place+1)cout<<"输入位置出界。"<<endl;
else v.erase(v.begin()+place);
}break;
case 2:{
cout<<"请输入从区间起始和结束位置(结束位置元素不删除):"<<endl;
cin>>from>>to;
if(from<0||v.size()<to+1)cout<<"输入区间出界。"<<endl;
else v.erase(v.begin()+from,v.begin()+to);//删除区间内,包含区间起始点,不包含尾点
}break;
case 3:{
v.clear();
}break;
}
}
void Sort()
{
int i;
cout<<"*****1.升序 2.降序******"<<endl;
cin>>i;
switch(i)
{
case 1:sort(v.begin(),v.end());break;
case 2:reverse(v.begin(),v.end());break;
}
}
void Display()
{
vector<int>::iterator it;
for(it=v.begin();it!=v.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
}
void Change()
{
int place;
cout<<"请输入要修改的元素的位置(首元素为1):"<<endl;
cin>>place;
cout<<"请输入一个整数:"<<endl;
cin>>v[place-1];
}
int main()
{
int i;
while(1)
{
menu();
cout<<"请输入菜单号:"<<endl;
cin>>i;
if(i==7)break;
switch(i)
{
case 1:Add();break;
case 2:Insert();break;
case 3:Delete();break;
case 4:Sort();break;
case 5:Display();break;
case 6:Change();break;
default:cout<<"输入错误!"<<endl;break;
}
}
}
运行截图:
更多STL例子: C++ STL的使用
有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。