随笔分类 -  C++ & 算法

C++中的explicit关键字
摘要:class WTF { public: explicit WTF(int, float f = 0.1) {} //explicit只对类型转换构造函数有效 //表明禁止使用这个构造函数进行隐式类型转换 }; void FKU(const WTF&) { } int main() { int val 阅读全文

posted @ 2016-09-05 20:54 远近闻名的学渣 阅读(127) 评论(0) 推荐(0)

leetcode : Basic Calculator II
摘要:实现一个简单的计算器,在llvm和wiki上看见的算法 阅读全文

posted @ 2016-07-28 21:58 远近闻名的学渣

进程的100种退出方式
摘要:1. 从main 函数 return 时,首先析构自动变量 (按照与声明顺序相反的顺序来析构), 然后执行全局和静态变量的析构,以及注册的 atexit 函数,顺序与声明顺序相反。 A a1; 比如 int main() { A a2; ateixt(fun1); static A a3; retu 阅读全文

posted @ 2016-05-08 18:35 远近闻名的学渣 阅读(517) 评论(0) 推荐(0)

leetcode : Product of Array Except Self
摘要:Given an array of n integers where n > 1, nums, return an array output such that output[i] is equal to the product of all the elements of nums except  阅读全文

posted @ 2016-03-28 11:58 远近闻名的学渣 阅读(122) 评论(0) 推荐(0)

leetcode :Search in Rotated Sorted Array I&&II
摘要:一、Search in Rotated Sorted Array: 在一个 rotated 之后的有序数组中,寻找某个数,很自然的想到二分查找。 在二分查找的过程中,既可以按照left right 是否有序来分情况讨论,也可以按照 left mid 是否有序来分情况讨论,问题在于需要注意边界问题以及 阅读全文

posted @ 2016-03-27 21:40 远近闻名的学渣 阅读(123) 评论(0) 推荐(0)

leetcode :Spiral Matrix
摘要:题目很简单,就是花式拐弯遍历一个矩阵。 既然题目花式拐弯遍历矩阵,那我们就来一个花式漂移完成拐弯瞬间爆炸的解法: 1,定义四个移动操作,goLeft,goRight,goUp,goDown 2,定义四个边界,up,down,left, right,当goLeft走到头的时候,将down边界往上移一行 阅读全文

posted @ 2016-03-27 15:57 远近闻名的学渣

DFS算法的循环结束条件
摘要:写DFS算法时,最好在函数入口处判断边界条件与结束条件,如 void dfs () { check_bound(); check_end(); dfs(); } 这样的好处有: 1,写算法的时候,首先是要考虑空输入的,如vector<int>{}这样的初始输入,所以要么在dfs之前判断,要么在dfs 阅读全文

posted @ 2016-03-26 22:12 远近闻名的学渣

C++ 中的重载,隐藏与重写
摘要:首先, 这里重载指 overwrite, 即普通的函数重载, 重写指的是 override, 即虚函数的重写,隐藏:这里特指派生类成员隐藏基类成员的情况 一、重载 说到重载首先得说名字查找, C++在处理函数调用的方式是这样的: 首先根据函数的名字在当前作用于进行名字查找,如果没找到,则往上层作用域 阅读全文

posted @ 2016-03-15 10:41 远近闻名的学渣 阅读(290) 评论(0) 推荐(0)

C++范型编程 -- <type_traits>头文件
摘要:在type_traits头文件中定义了许多非常好玩的东西,这里对着 c++ reference 翻译一丢丢   一,helper class , std::intergral_constant 我们知道对在模板参数中的非类型参数必须为常量,所以这个东西就是可以为类型T的任意一个常量v,做出来一个特定 阅读全文

posted @ 2016-03-13 15:53 远近闻名的学渣 阅读(4181) 评论(0) 推荐(0)

理解std::forward 与 参数转发
摘要:在泛型编程中,常常需要将参数原封不动的转发给另外一个函数,比如std::make_shared<T>(Args&&... args) 就需要将参数完美转发到T对应的构造函数中。为了实现完美转发, std增加了forward工具函数, 完美转发主要目的一般都是为了避免拷贝,同时调用正确的函数版本。 为 阅读全文

posted @ 2016-03-12 23:56 远近闻名的学渣 阅读(4395) 评论(0) 推荐(1)

lambda 与 priority_queue 以及 function 以及 bind
摘要:lambda是一种可调用对象,它是一个对象,每个lambda都有自己不同的类型。 年轻时以为STL和lambda混用时会有一些奇怪现象,比如我无法像这样定义优先队列: 但是却可以这样用sort 以及可以这样用sort 之所以会出现这样的疑问,是因为没有搞清楚函数对象 (也叫可调用对象) 和 模板的类 阅读全文

posted @ 2016-03-11 23:58 远近闻名的学渣 阅读(4359) 评论(0) 推荐(2)

绝对不要在 构造函数/析构函数 中调用虚函数
摘要:今天为了查一个重复delete的bug,在析构函数中调用了一个虚函数 toString,想在对象析够前打印对象信息,结果发现打印出来全都是基类的,后来仔细研究了这个问题,先说结论: 1,绝对不要在构造函数和析构函数中调用虚函数,他们都不是动态绑定的。 2,如果析构函数是虚函数,那么可以看到类似动态绑 阅读全文

posted @ 2016-02-20 23:19 远近闻名的学渣

动态顺序统计、区间树、线段树、树状数组、数据离散化
摘要:1、动态顺序统计顺序统计指的是两个操作: select(index,set)//找出集合中第index大的元素 rank (e, set) //给定一个元素,判断它在集合中排第几动态顺序统计指的就是这个数据集合是会变动的,对于数据集合不会变动的情况,最好的方法自然是先排序,然后用二分查找实现... 阅读全文

posted @ 2015-12-21 17:17 远近闻名的学渣

二叉搜索的正确姿势
摘要:一般来说,二叉搜索是这样实现的: 然而这样是非常不合理,第一,left、right用到了左移操作,左移操作对于有符号数,最左添0还是添符号位,在c++里是未定义行为(不过在这里left、right一般大于0,所以符号位就是0),left、right、mid应该用无符号类型,这样可以保证不会溢出,如果 阅读全文

posted @ 2015-10-13 19:15 远近闻名的学渣

C++中作用域,名字查找与函数重载
摘要:杂七杂八的记录一下免得忘了:1,using 声明声明的是名字,所以会把函数以及其重载全部带进去2,函数不能用返回值重载,不能用顶层const重载,可以用底层const重载3,类的成员函数可以在类内部声明,在类外部声明,这个外部指的是类作用域的外层作用域。所以下面的代码是会报错的namespace A... 阅读全文

posted @ 2015-10-08 23:38 远近闻名的学渣

智能指针与循环引用
摘要:c++11中引入了之前在boost库中的智能指针,智能指针有三种shared_ptr, weak_ptr, unique_ptr。引入智能指针的作用是为了保证在出现异常时,也能保证堆内存会被释放掉,如下面代码:void fun() { T *t = new T(); //do somet... 阅读全文

posted @ 2015-10-08 21:04 远近闻名的学渣

函数返回值与RVO优化
摘要:RVO优化:return value optimistic,指当一个函数返回一个值类型而非引用类型时,可以绕过拷贝/移动构造函数,直接在调用函数的地方构造返回值。要发生rvo需要有三个条件:1,如果类型是自定义类型,那么此时的拷贝/移动构造函数是可访问的2,返回类型必须与实际类型完全一致,即返回时不... 阅读全文

posted @ 2015-10-08 20:05 远近闻名的学渣

leetcode : Single Number
摘要:这个题一个有三道:Single Number i:给n个整数,其中有一个数只出现了一次,其他的数都出现了两次,求那个single number,这个很简单,把所有的数字做一下异或,得到的结果就是那个single dog。Single Number ii:给n个整数,其中所有的整数都出现了三次,除了一... 阅读全文

posted @ 2015-09-30 22:19 远近闻名的学渣

leetcode : Peeking Iterator
摘要:Given an Iterator class interface with methods:next()andhasNext(), design and implement a PeekingIterator that support thepeek()operation -- it essent... 阅读全文

posted @ 2015-09-30 21:20 远近闻名的学渣

STL中的迭代器与traits技术
摘要:一,STL对其中的各个组件都有一定的规范要求,即如果自己实现其中的某个组件,那么这个组件必须符合STL规范才能与其他的STL组件兼容。 上篇在提到空间配置器的时候也提到过必须实现rebind,allocate,deallocate,construct,destroy等方法,在STL中,迭代器的类型... 阅读全文

posted @ 2015-09-17 21:46 远近闻名的学渣

导航