一.栈 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()–返回一个用于比较元素间的值的函数