文章目录
*
– 一、STL的简述
–
+ 1.STL的框架
+ 2.STL版本
– 二、编码铺垫
– 三、string类
– 四、常见构造
– 五、operator[]
– 六、访问及遍历
– 七、iterator迭代器
–
+ 1.正向迭代器
+ 2.反向迭代器
+ 3.const迭代器
– 八、Capacity容量操作
–
+ 1.常用接口
+ 2.扩容问题
– 九、Modifiers修改操作
– 十、非成员函数重载
– 十一、总结
; 一、STL的简述
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且一个包罗数据结构与算法的软件框架。
1.STL的框架
; 2.STL版本
原始版本
Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意
运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使
用。 HP 版本–所有STL实现版本的始祖
P. J. 版本
由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低,
符号命名比较怪异。
RW版本
由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般。
SGI版本
由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。我们后面学习STL要阅读部分源代码,主要参考的就是这个版本。
对于STL的学习我们可以前去官网看文档,多了解了解cplusplus.com
二、编码铺垫
string类本身就是一个模板,为什么要把string写成模板?是因为字符串的数组涉及编码问题,字符数组编码不同。所以需要模板
u16string:表示两个字节
u32string:表示四个字节
这里简单了解一下编码
- ✨ *ASCII码
美国信息交换标准码。
ASCII码表是计算机存值和文字符号的对应关系
只有256个字符
- ✨ *Unicode
万国码
Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码
包括了utf-8,utf-16,utf-32
utf-8兼容了ASCII,utf-8使用比较普遍,也比较节省空间
- ✨ *gbk
gbk即国标,针对中文而设计的编码。采用双字节编码。
三、string类
根据不同的编码选用不同的string(接口是差不多的),这里我们只需重点学习string(utf-8):
string类模板的大概框架:
template
//动态增长字符数组
class basic_string
{
private:
T* _str;
size_t _size;
size_t _capacity;
};
使用string类的时候,我们要包含头文件#include
下面我们开始说一说string类常用的接口,对于常用接口我们需要熟练使用,其他的即可查阅学习。
四、常见构造
废话不多说,我们直接来使用一下这些构造函数,形成初步了解:
#include
#include
using namespace std;
void test_test1()
{
string s1;//默认构造
string s2("hello string");//带参构造
s2 += "world";
string s3 = "hehe";//构造+拷贝构造----直接构造
string s4(s2);//拷贝构造
string s5 = s2;
string s6(10, 'X');//个数初始化
string s7("hello world", 5);//取前n个
string s8(s7, 2, 3);
cout << s1 << endl;
cout << s2 << endl;
cout << s3 << endl;
cout << s4 << endl;
cout << s5 << endl;
cout << s6 << endl;
cout << s7 << endl;
cout << s8 << endl;
}
int main()
{
test_test1();
return 0;
}
注意:string类对象可支持直接用cin和cout进行输入和输出,这是因为重载了流插入>>和流提取<
Original: https://blog.csdn.net/weixin_60478154/article/details/127691277
Author: 平凡的人1
Title: 【C++】简述STL——string类的使用
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/655624/
转载文章受原作者版权保护。转载请注明原作者出处!