泛型编程

STL(Standard Template Library)主要由两种组件构成:容器(container)和操作容器类的泛型算法(generic algorithm)。


      容器包括:vector、list、set、map等。其中vector和list是熟悉容器。一次从第一个元素到最后一个。主要进行迭代(iterate)操作。map和set是关联容器。可以快速寻找容器中任意值。map由成对的key/value组成,key用于查找,value存放数据。例如通讯录中姓名用作key,号码用作value。set仅含key,查找时是判断某值是否存在于所有值中。
所有容器共通操作

  • begin()和end():返回指向首元素/尾元素的iterator。
  • insert()和erase():插入和删除某个元素。
  • equality(==)和inequality(!=):返回true或false。
  • assignment(=):将某个人容器复制给另一个容器。
  • empty():判空操作,空时返回true,否则false。
  • size():获取容器内含有的元素数目。
  • clear():删除所有元素。

泛型算法是操作容器类的行为,不关心数据类型,于容器相互独立。包括70多种:

  • search 查找:find(),count() adjacent_find(),find_if(),count_if(),binary_search(),find_first_of().
  • sorting(排序)、ordering(整理):merge(),partial_sort(),partition(),random_shuffle(),reverse(),rotate(),sort().
  • copy(复制)、deletion(删除)、substitution(替换):copy(),remove(),remove_if(),replace(),replace_if(),swap(),unique().
  • relational(关系):equal(),includes(),mismatch().
  • generation(生成)、mutation(质变):fill(),for_each(),generate(),transform().
  • numeric(计数):accmulate(),adjacent_difference(),partial_sum(),inner_product().
  • set(集合):set_union(),set_difference().

查找某值:

    template <typename elemType>
    elemType * find(const vector<elemType> &vec, elemType value){
        for(int i = 0; i < vec.size(); i++){
            if(vec[i] == value)
                return &vec[i];
        return 0;
        }
    }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雲烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值