S T L

一点STL容器皮毛总结

STL概述

STL(Standard Template Library)最早由美国计算机科学家Alexander Stepanov在20世纪80年代初期提出,他在那个时候正在工作的Hewlett-Packard公司(HP)的实验室中,编写了一些与计算机科学相关的程序。Stepanov认为,程序员需要一种通用的编程模式,能够更加方便地实现各种数据结构和算法。在此基础上,他开始着手设计一种新的C++库,这就是STL的雏形。

基本容器

栈(stack)

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

那么怎样用c++STL库实现栈呢?

栈 基本操作

1.定义

结构:stack<数据类型> 栈名称;

例:定义一个int类型的名称为s的栈

stack<int> s;

2.入栈

结构:栈名.push(元素);

无返回值。

例:将1压入s栈栈顶

s.push(1);

 3.出栈

结构:栈名.pop();

例:将s栈栈顶出栈

s.pop();

4.取栈顶元素

结构:栈名.top();

例:取s栈栈顶元素

s.top()

5.判空

结构:栈名.empty();

返回值:栈空

栈空返回true.

6.栈大小

结构:栈名.size()

s.size()
队列(queue)

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

基本操作 

1.定义:queue<类型> 名称;

2.入队列:q.push();

3.出队列:q.pop();

4.返回最后一个元素:q.back();

5.返回第一个元素:q.front();

6.判空:q,empty();

7.大小:q.size();

vector

1.定义:vocter<类型> 名称;

2.

size();//返回容器中元素的个数
empty();//判断容器是否为空
push_back(x);在容器末尾添加x

3.遍历

for (int i = 0; i < v.size(); i++) { // 遍历vector中的所有元素  
        cout << v[i] << " "; // 输出每个元素  
    } 
pair

1.定义

pair<int,int> p;

2.

make_pair(1,2);

产生新的对 

3.

p.first//pair的第一个元素

p.second//pair的第二个元素

map(映射)

映射是一个键值对的集合,它允许通过键来访问对应的值。映射的键是唯一的,不能存在重复键。

1.定义

map<键类型, 值类型> 名称;

map<int,int> mp;


2.插入

名称[键] = 值;

mp["hello"]=1;
mp[1]=2;


3.删除

(1)名称.erase(键);

mp.erase("hello");
mp.erase(1);

(2)名称.clear();


4.大小

名称.size();

mp.size();


5.排序

名称.sort();

6.遍历

map的遍历需要用到迭代器;

定义方法:map<int,int>::iterator it;

遍历:

for(it=mp.begin();it!=mp.end();it++)
{
    cout<< it->first;//输出键
    cout<< it->second;//输出值
}

set

set是一个元素集合体,其元素具有唯一性,无序的。它自动对元素进行排序,且不允许存在重复元素。

1.定义

set<类型> 名称;

set<int> s;


2.插入

名称.insert(元素);
3.删除

(1)名称.erase(元素);

(2)名称.clear();
4.大小

名称.size();
5.排序

名称.sort();

6.遍历

set的遍历需要用到迭代器;

定义方法:set<int>::iterator it;

遍历:

for(it=s.begin();it!=s.end();it++)
{
    cout<< *it << endl;
}

multimap

C++ STL库中的multimap是一种关联容器,它允许存储多个键值对,其中每个键可以对应多个值。与map容器不同,multimap允许重复的键值对存在。

multimap底层基于红黑树实现,它的键是唯一的,并且按照键的升序排列。每个键可以对应多个值,这些值按照插入顺序存储在multimap中。

他的基本操作与map大体相同。

multiset

multiset容器中的元素会按照升序自动排序。multiset容器允许包含重复的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值