STL组件之容器

  • 容器:管理某类对象的集合
  • 迭代器:在一个对象集群的元素进行遍历,为所有的容器提供一组很小的公共接口,与指针类似,以operator++累进,以operator*提所指值
  • 算法:处理集群内的元素

STL的一个根本特性:所有组件都可以针对任意types运作。

  1. 序列式容器
    可序群集,有vector, deque, list

    • vector:将元素置于dynamic array中管理,允许随机存取
    • deques(double-ended-queue):一个dynamic array,可以向两端发展,不论在尾部还是头部安插元素都很迅速,在中间部分,要移动元素。
    int main()
    {
    deque<float> coll;
    for(int i=1;i<=6;i++)
    {
        coll.push_front(i*1.1);
    }
    for(int i=0;i<coll.size();i++)
    cout<<coll[i]<<' ';
    cout<<endl;
    } 
    • list:双向链表,list的每个元素都以一部分内存指示其前驱元素和后继元素。存取动作花费线性时间,但是安插或删除动作迅速。
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<char> coll;
for(char c='a';c<='z';c++)
  coll.push_back(c);
  while(!coll.empty())
  {
    cout<<coll.front()<<' ';
    coll.pop_front();
  }
  cout<<endl;
}
  • string: 也可当作STL容器,与vector类似,只是元素是字符
  • array: 长度固定的数组,作为初始化行时很有用
#include <array>
...
using namespace std;
array<int,5> ai;//产生一个有5个int的数组
array<double,4> ad={1.2,2.1,3.43,4.3};
array<double,4> a;
a=ad;//valid for array objects of same size;

说明:在C++11中,可将列表初始化用于vector和array对象,在C++98中,不能对vector对象这样做。


  1. 关联式容器
    关联式容器依据特定的排序规则,自动为其元素排序,缺省情况下,以operator <进行比较。也可以提供自己的比较函数,定义出不同的排序规则。

    • set: set的内部元素依据其值自动排序,每个元素值只出现一次
    • multiset: 和set相同,允许重复元素
    • map: 元素是“实值/键值”所组成的一个对组,根据键排序,每一个键只能出现一次
    • multimap: 与map相同,允许重复元素

  1. 容器配接器
    • stack: LIFO
    • queue: FIFO
    • priority queue: 每个元素拥有不同的优先权,排序规则(缺省使用operator <),下一个元素永远是优先级最高的元素。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值