美文网首页
GeekBand C++ Week8 notes

GeekBand C++ Week8 notes

作者: 古来征战几人回 | 来源:发表于2016-07-05 02:32 被阅读0次

Week8 Notes

变易算法:

copy:对象拷贝

templateinline

OutIt copy(InIt_First, _InIt _Last, _OutIt _Dest)

Copy_backward:少一个参数

Copy_if:多一个判断函数

Swap:交换对象

Swap_ranges:交换某个区域的对象

Transform:函数作用后放入指定区间

也可以对函数输入两个区域的变量

replace:旧值替换为新值

replace_copy,先拷贝再替换

fill:把val赋值给所有元素

generate

remove,remove_if:移除某个数或符合条件的数

remove_copu先拷贝再移除

unique,返回的是迭代器

reverse,rotate

排序算法

sorting

template inline

void sort(_RanIt _First, _RanIt _Last)

需要提供operator <

int elements[] = {-1, 2, 3, -100, 200, 5};

std::vector v(elements,elements+6);

std::sort(v.begin(), v.end());

binary_search

templateinline

bool binary_search(_FwdIt _First, _FwdIt_Last, const _Ty& _Val)

在容器中查找等于val的元素,首先要排序

merge

将排好序的两个区间元素合并到dest

基于排序集合的一些算法

includes

set_union

set_intersection

set_difference

templateinline

bool includes(_InIt1 _First1, _InIt1_Last1, _InIt2 _First2, _InIt2 _Last2)

判别一个区间中是否包含另一个区间中的函数,这两个区间都是排好序的

set operations

基于堆得算法

make_heap

push_heap

pop_heap

sort_heap

make_heap

template inline

void make_heap (_RanIt _First, _RanIt_Last)

将区间转换成一个堆

对结构采用max_heap来维持平衡二叉树

int elements[] = {1, 4, 200, 8, 100, 5, 7};

cons tint n = sizeof(elements)/sizeof(int);

std::make_heap(elements, elements+n);

push_heap

template inline

void push_heap(_RanIt _First, _RanIt _Last)

向堆中添加一个元素,算法的前提是假设这个区间已经是一个堆,堆结构采用max_heap,维持平衡二叉树

heap算法pop_heap

templateinline

void pop_heap(_RanIt, _RanIt _Last)

从堆中弹出一个元素,该算法的前提是假设该区间已经是个堆,被弹出的对元素是根顶元素

堆结构采用max_heap,维持平衡二叉树

heap算法sort_heap

将堆中的元素进行排序,sort的做法是不断pop_heap,因为每次pop都可以获得堆中最大元素

泛型数值算法

泛型数值算法包含在头文件中

包括

accumulate

inner_product

partial_sum

adjacent_difference

accumulate

对区间中的每个元素进行累加,也可以加func

inner_product,默认加,可以自己加函数

partial_sum

到每一位的和;

也可以到每一位的函数作用

adjacent_difference

和partial_sum反一下,函数作用在当前元素和上一个元素上。

内存分配器

相关文章

  • GeekBand C++ Week8 notes

    Week8 Notes 变易算法: copy:对象拷贝 templateinlineOutIt copy(InIt...

  • GeekBand C++ Week1 Notes

    GeekBand C++ Week1 Notes A.OOP-面向对象编程 1基础:C语言 -变量variable...

  • GeekBand C++ Week7 Notes

    Week7 Notes 容器Containers Stack 也是一个线性容器,是一种先进后出FILO的数据结构,...

  • GeekBand C++ Week9 Notes

    C++设计模式 为了理解松耦合设计思想,掌握面向对象设计原则 什么是设计模式? 是一种解决方案的核心,可以避免重复...

  • GeekBand C++ Week10 Notes

    工厂方法:factory method 其实是当我们在类里面要实例化一个类的时候,有可能有多种情况出现,需要创建的...

  • GeekBand C++ Week6 Notes

    STL和泛型编程 Week6 Notes 1.模板概念和模板函数 C++模板简介 概观 为什么会有模板这个概念 S...

  • GeekBand C++ Week12 Notes

    系统设计与实践 系统设计介绍 短URL设计 设计一个系统把用户提供的URL转换为短的URL,访问的时候要跳回到原始...

  • GeekBand C++ Week11 Notes

    Week11 Notes “对象性能模式” 单间模式 面向对象很好地解决了抽象的问题,但是不可避免要付出一定的代价...

  • GeekBand C++ Week13 Notes

    搭建大规模可扩展系统 1.如何检测一台机器是否宕机? CAP理论:一致性,对于一些操作,每一个客户端有同样的vie...

  • GeekBand C++ Week14 Notes

    海量数据问题的处理方法: 1.hash map 就是把任意长度的输入通过散列算法编程固定长度的输出。这种转换时一种...

网友评论

      本文标题:GeekBand C++ Week8 notes

      本文链接:https://www.haomeiwen.com/subject/sfdhjttx.html