
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 · 469 阅读 · 0 评论 -
c++标准库算法
一、c++标准库算法,是什么东西(1)算法需要知道当前处于什么容器,可以帮助算法找到当前最有效率的动作。算法问迭代器问题。(2)算法形式第二版本,Cmp是一个criteria准则,比如排大小,是一个functors(3)算法与容器没有关联,通过iterator管理,各自闭门造车、二、各种容器的iterator_categoryrandom是可以跳跃的,连续空间可以跳跃r...原创 2019-08-25 13:13:39 · 1089 阅读 · 0 评论 -
仿函数functors
一、仿函数仿函数一个class里面重载小括号(),function core operator。仿函数创建的对象是函数对象,是一个对象,像一个函数,function object。仿函数只为算法服务。map的实现中,<key,data>组成一个pair,获得key使用select1st函数二、仿函数只为算法服务三、仿函数functors的可适配(adap...原创 2019-08-25 13:00:48 · 175 阅读 · 0 评论 -
数值算法
1.accumulatetemplate 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 · 401 阅读 · 0 评论 -
简单的自定义内存分配器
#include #include #include #include #include #include using namespace std;namespace liuqi {templateinline T* _allocate(ptrdiff_t size, T*) { set_new_handler(0); T* tmp = (T*)(::operator原创 2017-06-11 14:17:16 · 1060 阅读 · 0 评论 -
排序
1.sort对于被排序的元素,需提供operator// sort algorithm example#include // std::cout#include // std::sort#include // std::vectorbool myfunction (int i,int j) { return (i<j); }struct myc原创 2017-06-10 23:18:22 · 392 阅读 · 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 · 556 阅读 · 0 评论 -
变易算法
1.copytemplateclass InputIterator, class OutputIterator> OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result){ while (first!=last) { *result = *first;原创 2017-06-10 21:55:43 · 308 阅读 · 0 评论 -
非变易算法
1.for_eachtemplateclass 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 · 333 阅读 · 0 评论 -
ostream iterator
1.ostream_iteratortemplate class _CharT = char, class _Traits = char_traits >class ostream_iterator {public: typedef _CharT char_type; typedef _Traits原创 2017-06-08 09:04:44 · 570 阅读 · 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 · 529 阅读 · 0 评论 -
函数适配器:bind2nd
1.bind2nd使用2.bind2nd源码templateinline 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 · 438 阅读 · 0 评论 -
type traits
1.type traits使用 http://www.cplusplus.com/reference/type_traits/ #include #include using namespace std;templatevoid type_traits_output(const T& x) { cout << "\ntye traits for type :原创 2017-06-02 15:18:02 · 381 阅读 · 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 · 402 阅读 · 0 评论 -
function adapter bind(C++11)
1.头文件 #include2.绑定 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 · 397 阅读 · 0 评论 -
迭代器的设计原则和Iterator Traits的作用与设计
一、迭代器设计原则迭代器是容器与算法处理的桥梁category分类,类别difference_type两个迭代器之间的距离的类型,容器最大能放多少元素,超过differene_type会有问题。迭代器的设计原则需要5中type,5种type叫做迭代器iterator associated types关联2.为什么设计iterator_traits算法向迭代器提问,迭代器...原创 2019-08-25 21:12:39 · 319 阅读 · 0 评论