stl学习笔记

9 篇文章 0 订阅
1 篇文章 0 订阅

几种特殊C++语法

  1. 临时对象
    template <typename T>
    class print
    {
    public:
    void operator()(const T& elem)
    { cout << elem << ' '; }
    };
    //使用:
    print<int>(5); //输出 5
  2. increment/decrement/dereference 操作符重载
    `class INT
    {
    public:
    INT(int i):m_i(i){};
    //++前缀
    INT& operator++()
    {
    ++this->m_i;
    return *this;
    }
    //++后缀
    const INT operator++(int)
    {
    INT temp = *this;
    ++ (*this);
    return temp;
    }

     int& operator*() const
     {
     return (int&)m_i;
     }
     ostream& operator<<(ostream& os,const INT& i)
     {  
     os<<m_i;
     return os;
     }
    

    private:
    int m_i;
    };
    `

  3. 仿函数
    函数有一个缺点就是没有自己的状态信息
    仿函数定义:
    template <class T>
    struct plus {
    T operator()(T& x,T& y) const {return x+y;}
    };
    //使用:
    plus(3,4);

空间配置器

迭代器

容器和算法分开设计,分别泛型化
1. 迭代器设计
迭代器本质就是指针,重载operator* 和 operator->

/* auto_ptr */
template<class T>
class auto_ptr {
public:
explicit auto_ptr(T *p = 0):pointee(p){}
template<class U>
auto_ptr<T>& operator=(auto_ptr<U>& rhs){
}
T& operator*() const {return *pointee;}
T* operator->() const {return pointee;}
private:
T* pointee;
};

2. traits编程

1.  value type
类型
2.  difference type
两个迭代器之间的距离
3.  reference type
4.  pointer type
5.  iterator_category
  1.  Input Iterator 只读
  2.  Output Iterator 只写
  3.  Forward Iterator 读写
  4.  Bidirectional Iterator 可双向移动
  5.  Random Access Iterator 随机取值

序列式容器

  1. vector
    线性空间,容量capacity()>=size()
  2. list
    双向链表
  3. deque
    双向开口连续性空间,分段连续空间组合而成,有个map的映射表指向另一段连续性空间。可在首尾插入和删除
    这里写图片描述
  4. stack
    FILO,一般以deque来实现,也可以list来实现。
  5. queue
    FIFO,底端加入元素,顶端取出元素。list实现
  6. heap
    priority queue.插入的时候排序。
    使用完全二叉树。
  7. priority_queue
  8. slist
    单向链表。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值