STL主要包含了容器、迭代器、算法和string四部分。
创新互联从2013年开始,是专业互联网技术服务公司,拥有项目成都做网站、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元开化做网站,已为上家服务,为开化各地企业和个人服务,联系电话:18980820575标准库算法对迭代器而不是容器进行操作。因此,算法不能(直接)添加或删除元素。一、容器 容器为存储和管理数据对象的集合,包含了三种容器:
1.线性容器:该类容器的逻辑结构为线性结构。可以通过下标访问元素的容器称为随机容器,其特点是容器中的元素在内存中是连续存放的,容器的存储结构为顺序存储结构。vector和deque为随机容器。
2.适配器容器:以线性容器作为底层容器,且对线性容器的通用接口加以限制。默认的底层容器为双端队列。只要满足上层容器对接口的要求,也可以用自己定义的容器类型作为适配器容器的底层容器。
容器的创建 :3.关联容器:其存储结构为平衡树,基于红黑树实现。
//模板类创建
vectora; //定义了一个vector类型的变量,其中元素为整型
//用户自定义类型的容器变量
struct node{
int key;
int data;
};
vectorb;
注意:用户自定义的类型不适用于容器priority_queue、map、multimap、set、multiset
的类型参数,因为这类容器需要根据元素值的大小来决定存放位置。因此,创建这类容器时,
需定义元素之间的比较准则,确保元素之间可以进行比较。
因此,若用户自定义类型为整形、字符型等基本数据类型,也适用于以上容器;
若容器元素类型为用户自定义类型,则必须指定自定义类型变量之间的比较方法。
//第一种方法:基于运算符的比较方法
//包含小于运算符重载的类型定义
struct node{
int key;
int data;
bool operator<(const node &n1)const{
return keyse;
//第二种方法:基于比较器的比较方法
//即定义对函数调用进行重载的结构,并在创建对象时将该结构名作为参数
struct cmp{
bool oprator()(node n1,node n2){
return n1.keyse;
容器的基本操作: size()
empty()
insert()
erase()
clear()
begin()
end()
pair类型:pair类型的变量将一对值组合成一个整体(相当于一个含有两个元素的结构),这一对值可以具有不同的数据类型,可以用pair的;两个公有属性first和second访问这两个值。
pairp(1,"hahaha"); //在定义时初始化
p=make_pair(2,"abc"); //改变pair变量的值
cout<>vp; //pair作为其他容器的类型参数
vp.push_back(make_pair(2,4));
cout<
二、迭代器 迭代器可以访问容器(适配器容器除外)的元素,迭代器和容器的关系类似于指针和数组的关系。迭代器和指针之间的一个重要区别就是不存在NULL的迭代器。
//迭代器的定义方式:
//容器类型::iterator it
vector::iterator it;
//向前/后移动
it--;
it++;
//随机迭代器如vector和deque,可以采用加上或减去一个整数的方式向后/向前移动
it = it+2;
//非随机容器的迭代器只能采用“++”或“--”移动
//举例:遍历容器所有元素
for(vector::iterator it=a.begin();it!=a.end();it++)
cout<<*it<
三、算法
string用法//头文件
#include//初始化
string s1;
string s2("hello world!");
string s3="hello china!";
//赋值与比较
if(s2>s3) cout<
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧