STL

STL概论

目标 提升复用性
尝试 函数(functions),类别(classes),到函数库(function libraries),类别库(class libraries)、各种组件,从模块化设计,到面向对象(object oriented )
目标 建立数据结构和算法的一套标准,并且降低他们之间的耦合关系,以提升各自的独立性、弹性、交互操作性(相互合作性,interoperability)
结果 STL诞生

1.1. STL基本概念

  • 容器(container)
  • 算法(algorithm)
  • 迭代器(iterator)

1.2. STL六大组件简介

容器: 各种数据结构,如vector、list、deque、set、map等,用来存放数据,从实现角度来看
STL容器是一种class template。
算法: 各种常用的算法,如sort、find、copy、for_each。
从实现的角度来看,STL算法是一种function tempalte.
迭代器: 扮演了容器与算法之间的胶合剂,共有五种类型.
从实现角度来看,迭代器是一种将operator* , operator-> ,operator++,operator--等指针相关操作予以重载的class template.所有STL容器都附带有自己专属的迭代器,只有容器的设计者才知道如何遍历自己的元素。原生指针(native pointer)也是一种迭代器。
仿函数: 行为类似函数,可作为算法的某种策略。
从实现角度来看,仿函数是一种重载了operator()的class 或者class template
适配器: 一种用来修饰容器或者仿函数或迭代器接口的东西。
空间配置器: 负责空间的配置与管理。
从实现角度看,配置器是一个实现了动态空间配置、空间管理、空间释放的class tempalte.

STL六大组件的交互关系,容器通过空间配置器取得数据存储空间,算法通过迭代器存储容器中的内容,仿函数可以协助算法完成不同的策略的变化,适配器可以修饰仿函数。

摘自:
https://blog.csdn.net/weixin_41969690/article/details/106648441?ops_request_misc=%7B%22request%5Fid%22%3A%22163413364316780274155669%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=163413364316780274155669&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2

string

//定义
string s1;
string s2 (s;
string s3(s0,;
string s4 (s0,3, ;
string s5 ("let us learn string");
string s6 ("let us learn string",;
string s7 (10, 'x');
string s8 (s0.begin(), s0.begin()+;

总结:
string(直接输入数组/已有数组名)
string(数组,开始的下标,取几个)
string(数组开始的位置,数组结束的位置)
string(几个,字符)

//操作
=,assign() //赋以新值
swap() //交换两个字符串的内容
+=,append(),push_back() //在尾部添加字符

insert() //插入字符
insert(要被插入的地方,插入的字符)

erase() //删除字符
erase(要删除的位置)
erase(要删除的第一个字符位置,要删除的最后一个字符的后一个位置)
clear() //删除全部字符

replace() //替换字符
replace(替换的下标,多少个字符被替换,替换的字符)
replace(替换的字符的开始位置,替换字符的最后一个位置的后一个位置,替换字符)
replace(替换字符的下标,多少个字符被替换,替换成多少遍个,替换字符)

size(),length() //返回字符数量
capacity() //返回重新分配之前的字符容量
reserve() //保留一定量内存以容纳一定数量的字符

copy() //将某值赋值为一个C_string
c_str() //将内容以C_string返回
data() //将内容以字符数组形式返回
substr() //返回某个子字符串``

摘自:https://blog.csdn.net/lsh_2013/article/details/46728993?ops_request_misc=%7B%22request%5Fid%22%3A%22163413685116780261917125%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=163413685116780261917125&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2

string:
vector:
deque :

上一篇:Entitas 初级


下一篇:Java学习笔记--堆、栈、常量池