C++的STL库(vectorstring的⽤法)
STL是C++标准库的⼀个重要组成部分,它实现了常⽤的数据结构和算法。STL由算法,容器,迭代器,适配器,仿函数(函数对象),空间适配器六⼤部件组成。STL容器⾸先是⼀个模板类,通过在类中实现对数据的操作,⽽包含这样的类的实现就叫做⼀个容器。
STL包含了许多容器,包括:向量(vector),列表(list),队列(queue),双端队列(deque),优先队列(Priority queue),集合(set),多重集合(multiset),映射(map),多重映射(multimap)ng
STL的算法是通⽤的,并不依赖于特定的数据结构和对象。
⼀、C++ vector的⽤法
vector容器可以容纳多种类型的数据,vector是C++STL的⼀个重要成员。需要包含头⽂件:
#include<vector>
1、vector 的初始化:
(1)vector<int> a(10);//定义了10个整型元素的容器a
(2)vector<int> a(10,1);//定义了10个整型元素的容器,都初始化为1
(3)vector<int> a(b);//⽤容器b初始化容器a
(4)vector<int> a(b.begin(),b.begin()+3);//将b容器的前三个元素赋值给a容器
(5)int b[5]={2,4,3,1,5,4};
vector<int>a(b,b+7);//⽤数组对容器进⾏初始化
2、vector对象的⼏个重要操作
(1)a.assign(b.begin(),b.begin()+3);//将b的前三个元素赋给容器a
(2)a.assign(4,2);a含4个元素,每个元素均为2
(3)a.back();返回a的最后⼀个元素
(4)a.front();//返回a的第⼀个元素
(5)a[i];//返回第i+1个元素
(6)a.clear();//清空a的元素
(7)a.empty();//判断a容器是否为空,若为空,则返回true,若不为空,则返回false
(8)a.pop_back();//删除a容器的最后⼀个元素
(9)a.erase(a.begin(),a.begin()+3);//删除容器a的前三个元素
(10)a.push_back(5);//在a的最后⼀个元素后添加元素5
(11)a.insert(a.begin()+1,5);//在容器a的第⼆个元素的位置处插⼊⼀个元素,值为5
(12)a.insert(a.begin()+1,3,5);//在容器a的第⼆个元素的位置插⼊3个5
(13)a.insert(a.begin(),b+3,b+6);//在容器a的⾸位置添加3个元素(从b容器的第四个元素到第6个元素,不包括第七个元素)
(14)a.size();//返回a中元素的个数
c++string类型(15)a.capacity();//返回a在内存中可以容纳的元素的个数
(16)a.resize();//将a元素的个数限制到10个,多余的则进⾏删除,缺少的按随机值进⾏补充
(17)a.swap(b);//将容器b中的所有元素与a容器进⾏交换
(18)a==b;a!=b;a>=b;//a和b均为向量容器
3、访问vector的⽅法
1)添加元素
1.向容器中添加元素
vector<int> a;
for(int i=0;i<5;i++)
a.push_back(i);
2.利⽤数组进⾏添加元素
int a[5]={1,34,5,6,7};
vector<int> b;
for(int i=2;i<4;i++)
b.push_back(a[i]);
3、从现有的向量中选择⼀部分元素添加
int a[5]={2,3,5,6,7};
vector<int> b;
vector<int> c(a+1,a+4);
for(vector<int>::iterator iter=c.begin();iter&d();iter++)
b.push_back(*iter);
4、从已有的⽂件中读取元素添加到容器中
ifstream in("");
vector<int> a;
for(int i;in>>i)
a.push_back(i);
2)从vector容器中读取元素
1.通过坐标形式进⾏访问
int a[5]={2,3,4,5,6};
vector<int> b(a,a+3);
for(int i=0;i<b.size();i++)
cout<<b[i];
2.通过迭代器访问
int a[5]={2,3,4,5,6};
vector<int> b(a,a+3);
for(vector<int>::iterator iter=b.begin();iter!=b.end();iter++)
cout<<*iter<<" ";
4、⼏种经常使⽤的算法(包含头⽂件 #include<algorithm>)
1、sort(a.begin(),a.end()); //对容器中的元素从⼤到⼩进⾏排序
2、reverse(a.begin(),a.end()); //对容器中的元素进⾏逆置
3、copy(a.begin(),a.end(),b.begin()+1) //将容器a中的元素复制到容器b中,从第⼆个元素的位置开始进⾏覆盖
4、find(a.begin(),a.end(),10); //在容器a中寻元素10,并返回其在容器中的位置
⼆、STL的string⽤法
C语⾔提供的字符数组容易造成字符丢失和数组越界的问题,⽽c++则提供了string类,string类长度任意,包含了⼀些常⽤的成员函数,⽽且可以和字符数组之间相互的转换:
1)可以直接⽤数组来初始化字符串
char  a[10];
string s=a;
2)可以利⽤copy函数将字符串s中的元素拷贝到数组a中
使⽤string类时,要先加头⽂件
#include<string>
using namespace std;
1、为string赋值,进⾏初始化
(1)string s;//不进⾏初始化
(2)string s="csdn"; //将s初始化为"csdn"
string s("csdn");
string s(3,"csdn"); //将s初始化为3个csdn的字符串
(3)stirng s=s1; //将s1拷贝给s
(4)⽤字符数组进⾏赋值
char a[10];
scanf("%s",a);
string s=a;
(5)输⼊赋值
string s;
cin>>s;
2、string常⽤的成员函数
1.
(1)size() //返回字符串的尺⼨⼤⼩,以byte为单位衡量
(2)length() //返回字符串的长度
(3)empty()  //判断字符串是否为空,为空则返回true,否则返回false
(4)clear()  //清空字符串
(5)resize() //重新设置字符串的长度⼤⼩,过长时进⾏截断,长度不够时,也可进⾏指定字符的填充
2.访问字符元素
(1)s[i]
(2)back() //返回最后⼀个元素的引⽤,s.back()='a'
(3)front() //返回第⼀个元素的引⽤
(4)at(i)    //返回第i各元素的引⽤
3.进⾏字符元素的修改
(1)insert插⼊元素
s.insert(3,str); //在s的第三个元素位置处插⼊字符串str
s.insert(5,3,"a") //在s的第五个元素位置处插⼊3个a字符
(2)erase删除元素
(3)replace替换元素
(4)+=:在字符串末尾添加元素
s+=str;
s.append("csdn"); //在s末尾追加“csdn”
(5)s.push_back(i);  //将元素i添加到字符串a后
(6)s.pop_back();    //删除末尾元素
(7)s.swap(str);    //交换s和str字符串
4、⽐较两字符串的⼤⼩compare
str1pare(str2); //⽐较两字符串,相同则返回1,不同则返回0
5、find()函数:在字符串中寻⼦字符串,返回的是查到的第⼀个⼦串的位置,未到时返回string::npos(⽆符号整型)  rfind():返回的是到的最后⼀个⼦串的位置
unsigned int found=s.find(str);
if(found!=string::npos)
cout<<"the first position is"<<found<<endl;
6、substr(); //裁剪字符串,返回裁剪后的内容,不影响原裁剪字符串的内容
substr(a,b);//裁剪a⾄b之间的元素
substr(n);  //裁减掉n之后的元素
7、copy()函数:将字符串拷贝到字符数组中

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。