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 空间动态分配内存)。
容量capacity() :
依据编译器不同申请容量也不同。可以容纳多少字符 。
vs2013规律:若少于15个,则会申请15个容量。以后多余容量就增加16个大小。
vc6.0(win32控制台应用程序)规律:若少于31个,则会申请31个容量。以后多余容量就增加32个大小。
reserve()修改容量:只能变大不能变小
字符串长度:length()
字符个数:size()
上述两个效果一样,意义不一样。不举例了,很好理解。
重新设置字符个数,容量不变。resize()
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
相关文章推荐
- 【C】C++标准模板库(STL)介绍--string
- 标准模板库(STL)的 std::string 与Unicode的使用
- C/C++学习笔记(十)标准模板库STL和string
- (转)标准模板库(STL)的 std::string 与Unicode的使用
- 标准模板库(STL)的 std::string 与Unicode的使用
- STL(三)string
- 标准模板库(STL)介绍(下)
- C++:STL(标准模板库)
- 标准模板库(STL)介绍(上)(转)
- 【C】C++标准模板库(STL)介绍--vector
- stl string常用函数
- STL学习笔记-- string
- C++模版STL中 map 和 string, vector 的用法详解!
- STL string源码剖析
- STL—string
- C++ STL之string
- STL string常用函数
- leetcode 5(知识点:STL string )
- 标准模板库STL学习总结
- STL中基本容器string,vector,list,deque,set,map之间的区别