您的位置:首页 > 其它

STL(标准模板库)string(一)

2017-10-25 14:01 513 查看
1.STL有6大组件:容器,迭代器,算法,适配器,分配器,仿函数。

2.容器:

(1)封装好的数据结构。如数组,链表,栈,队列,hash表。

(2)每种结构都能装任意类型。如int,char对象等。泛型编程思想。

(3)主要是数据结构的操作:增删改查。

3.算法:

(1)系统帮我们写好了算法:排序、交换、替换等等。

(2)一个算法使用多种容器。sort可以给数组排序也可以给链表排序。泛型编程思想。

4.迭代器。链接容器和算法——连接器。

5.STL好处:

(1)节省开发时间,增加开发效率。

(2)高移植性。有c++的地方就有STL。

(3)高性能。

6.容器

顺序容器

(1)string:字符串。

封装MFC中为CString。char* 是指向字符数组的地址的指针,string则是一个类,操作起来更灵活,管理更合理。使用时不用考虑内存的分配与释放(new 空间动态分配内存)。

//string全部构造函数
#include <iostream>
#include<string>
using namespace std;

int main(){
string str;//empty()判断字符串是否为空
cout << str <<" "<<str.empty()<< endl;//重载了输出运算符,输出为空

//构造函数string(size_type length,char ch) 用length个ch初始化字符串,size_type为无符号整型
string str1(5, 'a');
cout << str1 << " " << str1.empty()<<endl;//结果:aaaaa

//构造函数string(const char *str)
string str2("avcdefg");
cout << str2 << endl;//结果:avcdefg

//构造函数string(const char*str,size_type length)str前几个
string str3("avcdefg",3);
cout << str3 << endl;//结果:avc

//构造函数string(string &str,size_type index,size_type length) 中间一段
string str4("avcdefg", 2, 5);//下标2后面的5个:cdefg
cout << str4 << endl;//结果:avcdefg

//拷贝构造string(const string&str)
string str5(str2);
cout << str5 << endl;//结果:avcdefg

system("pause");
return 0;
}


容量capacity() :

依据编译器不同申请容量也不同。可以容纳多少字符 。

vs2013规律:若少于15个,则会申请15个容量。以后多余容量就增加16个大小。

vc6.0(win32控制台应用程序)规律:若少于31个,则会申请31个容量。以后多余容量就增加32个大小。

//规律:str:15+n*16
string str1(16, 'a');//15+16=31
cout << str1.capacity() << endl;


reserve()修改容量:只能变大不能变小

string str1(5, 'a');
str1.reserve(32);
cout<< str1.capacity() << endl;//reserve(参数)<=15容量仍为15,16-31为31…以此类推15-31-47-63


字符串长度:length()

字符个数:size()

上述两个效果一样,意义不一样。不举例了,很好理解。

重新设置字符个数,容量不变。resize()

string str2("abcdefg");
str2.resize(3);
cout<<str2.size()<<endl;//3
cout<<str2.length()<<endl;//3
cout<<str2.capacity()<<endl;//15
cout<<str2<<endl;//abc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stl