紫书笔记 - STL容器(C++)

一.栈 stack
 在C++的stack头文件里面含有一种实现栈的容器。

1.定义方式

stack< typename> name;

2.操作函数

stack< typename> st;
st.push(x);	//将x入栈
st.top();	//获得栈顶元素
st.pop();	//栈顶出栈
st.empty();	//栈判空
st.size();	//返回栈内元素个数

3.实例

#include <iostream>
#include <stack>
using namespace std;

int main(){
	stack<int> st;
	if(st.empty() == true)
		cout<<"栈空!\n";
	st.push(66);
	st.push(55);
	cout<<"栈大小为:"<<st.size()<<"\n";
	cout<<"栈顶元素为:"<<st.top()<<"\n";
	st.pop();
	cout<<"出栈后栈顶元素为:"<<st.top()<<"\n";
	return 0;
} 

在这里插入图片描述

二.map 映射
 在C++的map头文件里面含有一种实现映射的容器。

1.定义方式

map< typename1, typename2>  mp;
//typename1 键类型
//typename2 值类型

2.访问方式

 ①通过下标访问

mp[key] = value;

 ②通过迭代器访问

map< typename1, typename2>::iterator it;	//定义迭代器

it -> first;		//键
it -> second;		//值
it++;				//指向下一对映射

3.操作函数

map< typename1, typename2>  mp;

mp.find(key)			//返回键为key的迭代器
mp.erase(it)			//删除 it 迭代器的元素
mp.erase(key)			//删除元素的键
mp.erase(first, last)	//删除左闭右开区间迭代器的元素
mp.size()				//返回map中的映射对数
mp.clear()				//清空map中所有元素
mp.count(x)				//x出现返回1;否则返回0

//插入 & 赋值
mp[1] = 'a';  // 首先初始化话mp[1],然后在给mp[1]赋值为'a'
mp[1] = 'b';  // 修改mp[1]的值为'b'
mp.insert<pair<int, char>(2, 'c')> // key=2不存在,则插入该记录,mp[2]的值为'c'
m.insert<pair<int, char>(2, 'd')> // key=2存在,则什么也不做,mp[2]的值仍为'c'

三.set 集合
 set作为一个容器也是用来存储同一数据类型的数据类型。并且set有如下特点:

  • set内的元素进行了自动排序。
  • set内没有重复的元素。

1.定义方式

set<int> S;
set<int> S(S1);
vector<int> ivec({0,1,2,3,4,5,5,4,3,2,1,0});
set<int> S(ivec.iter1, ivec.iter2);

2.常用函数

begin()–返回指向第一个元素的迭代器

clear()–清除所有元素

count()–返回某个值元素的个数

empty()–如果集合为空,返回true

end()–返回指向最后一个元素的迭代器

equal_range()–返回集合中与给定值相等的上下限的两个迭代器

erase()–删除集合中的元素

find()–返回一个指向被查找到元素的迭代器

get_allocator()–返回集合的分配器

insert()–在集合中插入元素

lower_bound()–返回指向大于(或等于)某值的第一个元素的迭代器

key_comp()–返回一个用于元素间值比较的函数

max_size()–返回集合能容纳的元素的最大限值

rbegin()–返回指向集合中最后一个元素的反向迭代器

rend()–返回指向集合中第一个元素的反向迭代器

size()–集合中元素的数目

swap()–交换两个集合变量

upper_bound()–返回大于某个值元素的迭代器

value_comp()–返回一个用于比较元素间的值的函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值