STL源码剖析
INGNIGHT
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
tuple用例
1.tuple使用 (1)create a four-element tuple tuple >t; (2)create and initialize a tuple explicitly tuple t1(41, 6.3, "nico"); (3)creat原创 2017-05-31 18:40:15 · 544 阅读 · 0 评论 -
c++标准库算法
一、c++标准库算法,是什么东西 (1)算法需要知道当前处于什么容器,可以帮助算法找到当前最有效率的动作。算法问迭代器问题。 (2)算法形式第二版本,Cmp是一个criteria准则,比如排大小,是一个functors (3)算法与容器没有关联,通过iterator管理,各自闭门造车、 二、各种容器的iterator_category random是可以跳跃的,连续空间可以跳跃r...原创 2019-08-25 13:13:39 · 1153 阅读 · 0 评论 -
仿函数functors
一、仿函数 仿函数一个class里面重载小括号(),function core operator。仿函数创建的对象是函数对象,是一个对象,像一个函数,function object。仿函数只为算法服务。 map的实现中,<key,data>组成一个pair,获得key使用select1st函数 二、仿函数只为算法服务 三、仿函数functors的可适配(adap...原创 2019-08-25 13:00:48 · 208 阅读 · 0 评论 -
数值算法
1.accumulate template class InputIterator, class T> T accumulate (InputIterator first, InputIterator last, T init) { while (first!=last) { init = init + *first; // or: init=binary_op(init原创 2017-06-12 10:47:43 · 445 阅读 · 0 评论 -
简单的自定义内存分配器
#include #include #include #include #include #include using namespace std; namespace liuqi { template inline T* _allocate(ptrdiff_t size, T*) { set_new_handler(0); T* tmp = (T*)(::operator原创 2017-06-11 14:17:16 · 1117 阅读 · 0 评论 -
排序
1.sort 对于被排序的元素,需提供operator // sort algorithm example #include // std::cout #include // std::sort #include // std::vector bool myfunction (int i,int j) { return (i<j); } struct myc原创 2017-06-10 23:18:22 · 459 阅读 · 0 评论 -
仿函数适配器(mem_fun/mem_fun_ref)
1.mem_fun和mem_fun_ref 1.用来适配对象的成员函数 2.对于函数f以及对象obj,在obj上调用f的形式有3种: (1)f(obj); //f是全局函数(非obj成员函数) (2)obj.f(); //f是obj的成员函数,obj是非指针 (3)obj->f(); ////f是obj的成员函数,obj是指针原创 2017-06-09 10:29:19 · 603 阅读 · 0 评论 -
变易算法
1.copy templateclass InputIterator, class OutputIterator> OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result) { while (first!=last) { *result = *first;原创 2017-06-10 21:55:43 · 359 阅读 · 0 评论 -
非变易算法
1.for_each templateclass InputIterator, class Function> Function for_each(InputIterator first, InputIterator last, Function fn) { while (first!=last) { fn (*first); ++first; } retur原创 2017-06-09 20:54:03 · 394 阅读 · 0 评论 -
ostream iterator
1.ostream_iterator template class _CharT = char, class _Traits = char_traits > class ostream_iterator { public: typedef _CharT char_type; typedef _Traits原创 2017-06-08 09:04:44 · 612 阅读 · 0 评论 -
iterator adapter inserter
1.insert_iterator 这个adapter将iterator的赋值(assign)操作变为安插(insert操作),并将iterator右移一个位置。如此便可让user连续执行[表面上assign而实际上insert]的行为。 template class insert_iterator { protected: _Container* container; //底层容原创 2017-06-07 11:00:21 · 575 阅读 · 0 评论 -
函数适配器:bind2nd
1.bind2nd使用 2.bind2nd源码 template inline binder2nd bind2nd(const Operation& op, const T& x) { typedef typename Operation::second_argument_type arg2_type; return binder2nd(op, arg2_ty原创 2017-06-02 18:14:28 · 475 阅读 · 0 评论 -
type traits
1.type traits使用 http://www.cplusplus.com/reference/type_traits/ #include #include using namespace std; template void type_traits_output(const T& x) { cout << "\ntye traits for type :原创 2017-06-02 15:18:02 · 419 阅读 · 0 评论 -
iterator adapter reverse_iterator
template class reverse_iterator { protected: _Iterator current; //对应之正向迭代器 public: //逆向迭代器的5种associated types都和其相对应 typedef typename iterator_traits::iterator_category ite原创 2017-06-06 09:40:06 · 440 阅读 · 0 评论 -
function adapter bind(C++11)
1.头文件 #include 2.绑定 std::bind可以绑定 [1]functions [2]function objects [3]member functions,_1必须是某个object地址 [4]data members,_1必须是某个object地址 返回一个function object ret,调用ret原创 2017-06-06 08:31:05 · 458 阅读 · 0 评论 -
迭代器的设计原则和Iterator Traits的作用与设计
一、迭代器设计原则 迭代器是容器与算法处理的桥梁 category分类,类别 difference_type两个迭代器之间的距离的类型,容器最大能放多少元素,超过differene_type会有问题。 迭代器的设计原则需要5中type,5种type叫做迭代器iterator associated types关联 2.为什么设计iterator_traits 算法向迭代器提问,迭代器...原创 2019-08-25 21:12:39 · 365 阅读 · 0 评论
分享