C++学习

本文详细介绍了C++ STL中的四种重要容器——stack、queue、list和set/multiset的基本操作及功能。stack是先进后出的数据结构,适用于后添加元素优先处理的场景;queue则是先进先出,适合队列操作;list是链式存储结构,支持高效插入和删除;set和multiset则分别用于存储唯一和可重复的元素,提供了查找和统计功能。了解这些容器的操作有助于提升C++编程效率。
摘要由CSDN通过智能技术生成

stack容器

概念:stack是一种先进后出的数据结构,它只有一个出口

stack常用接口

功能描述:栈容器常用的对外接口

构造函数:

stack<T> stk;             //stack采用模板类实现,stack对象的默认构造形式

stack(const stack &stk);           //拷贝构造函数

赋值操作:

stack& operator = (const stack &stk);    //重载等号操作符

数据存取:

push(elem);     //向栈顶添加元素

pop();        //从栈顶移除第一个元素

top();        //返回栈顶元素

大小操作:

empty();             //判断堆栈是否为空

size();               //返回栈的大小

queue容器

概念:Queue是一种先进先出的数据结构,它有两个出口

queue常用接口

功能描述:栈容器常用的对外接口

构造函数:

queue<T> que;             //queue采用模板类实现,queue对象的默认构造形式

queue(const queue &que);            //拷贝构造函数

赋值操作:

queue& operator=(const queue &que);          //重载等号操作符

数据存取:

push(elem);          //往队尾添加元素

pop();                //从队头移除第一个元素

back();              //返回最后一个元素

front();             //返回第一个元素

总结:

入队---push

出队---pop

返回队头元素---front

返回队尾元素---back

判断队尾元素---empty

返回队列大小---size

list容器

功能:将数据进行链式存储

链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表有一系列结点组成

结点的组成:一个存储数据元素的数据域,另一个是存储下一个结点地址的指针域

STL中的链表是一个双向循环链表

函数原型:

list<T>lst;            //list采用采用模板类实现,对象的默认构造形式

list(beg,end);           //构造函数将[beg,end]区间中的元素拷贝给本身

list(n,elem);             //构造函数将n个elem拷贝给本身

list(const list &lst);              //拷贝构造函数

list赋值和交换

功能描述:

给list容器进行赋值,以及交换list容器

函数原型:

assign(beg,end);           //将[beg,end]区间中的数据拷贝赋值给本身

assign(n,elem);           //将n个elem拷贝赋值给本身

list& operator=(const list &lst);          //重载等号操作符

swap(lst);                  //将lst与本身的元素互换

list大小操作

功能描述:

对list容器的大小进行操作

函数原型

size();                //返回容器中元素的个数

empty();                 //判断容器是否为空

resize(num);                 //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。

                                     //如果容器变短,则末尾超出容器长度的元素被删除

resize(num,elem);                   //重新指定容器的长度为num,若容器变长,则以elem值填充新位置

                                               //如果容器变短,则末尾超出容器长度的元素被删除

list插入和删除

函数原型:

push_back(elem);//在容器尾部加入一个元素

pop_back();//删除容器中最后一个元素

push_front(elem);//在容器开头插入一个元素

pop_front();//从容器开头移除第一个元素

insert(pos,elem);//在pos位置插elem元素的拷贝,返回新数据的位置

insert(pos,n,elem);//在pos位置插入n个elem数据,无返回值

insert(pos,beg,end);//在pos位置插入[beg,end]区间的数据,无返回值

clear();//移除容器的所有数据

erase(beg,end);删除[beg,end]区间的数据,返回下一个数据的位置。

erase(pos);//删除pos位置的数据,返回下一个数据的位置

remove(elem);//删除容器中所有与elem值匹配的元素

list数据存取

函数原型:

front();          //返回第一个元素

back();            //返回最后一个元素

list反转和排序

函数原型:

reverse();             //反转链表

sort();                   //链表排序

set/multiset容器

set和multiset区别

set不允许容器中有重复的元素

multiset允许容器中有重复的元素

set大小交换

函数原型:

size();                //返回容器中元素的数目

empty();            //判断容器是否为空

swap(st);                //交换两个集合容器

set插入和删除

函数原型

insert(elem);              //在容器中插入元素

clear();                //清除所有元素

erase(pos);               //删除pos选代器所指的元素,返回下一个元素的选代器。

erase(beg,end);               //删除区间[beg,end]的所有元素,返回下一个元素的选代器

erase(elem);                    //删除容器中值为elem的元素

set查找和统计

函数原型

find(key);        //查找key是否存在,若存在,返回该键的元素的选代器;若不存在,返回set.end();

count(key);      //统计key的元素个数

set和multiset区别

区别:

set不可以插入重复数据,而multiset可以

set插入数据的同时会返回插入结果,表示插入是否成功

multiset不会检测数据,因此可以插入重复数据

pair对组创建

两种创建方式:

pair<type,type> p (value1, value2);

pair<type,type> p = make_pair(value1,value2);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值