自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

翻译 《Effective Modern C++》Item 11: Prefer deleted functions to private undefined ones.

引子当我们不想向用户提供某个函数功能时,我们只需要不实现它就可以了。但是在C++中,有一些函数会被默认实现,例如类的复制构造函数(copy constructor)和赋值函数(copy assignment operator)。这时C++98中的方法就是设置其属性为私有函数,通过访问权限来限制用户的实用。正文但是上面的方法并不总是成立,例如友元函数(friend function)仍然...

2018-07-09 15:53:15 293

翻译 《Effective Modern C++》Item 10: Prefer scoped enums to unscoped enums.

引子枚举是C中一个常见的基本类型,一般来说,我们声明一个变量,它的作用域仅存在于它外层花括号包围的范围内,但是这个限制对于枚举(准确说C++98版本的枚举)并不成立:enum Color { black, white, red }; // black, white, red are in same scope as Colorauto white = false; ...

2018-07-09 11:48:46 243

翻译 《Effective Modern C++》Item 9: Prefer alias declarations to typedefs.

引子C++11中引入的std::unique_ptr智能指针是个好用的东西,在我们使用unique_ptr的时候往往会写出这样的类型std::uniqeu_ptr<std::unordered_map<std::string,std::string>>,看上去很臃肿,因此大多数的时候我们会选择使用typedef进行类型的重定义,简化类型名称。可是在C++11中引入了一个...

2018-06-27 14:54:06 262

翻译 《Effective Morden C++》Item 8: Prefer nullptr to 0 and NULL.

引子这一条目就比较简单了,就是宣传用nullptr来指代空指针,而不是之前的0或者NULL。正文在老式C++中,显然0是int类型,而NULL也是一个整数类型(int或者long)。总的来说,这两个常用来表示空指针的符号并不是真正的指针类型。这样,当我们在进行函数重载时会发生麻烦,例如:void f(int); // three overloads of fvo...

2018-06-24 16:13:52 242

翻译 《Effective Morden C++》Item 7: Distinguish between () and {} when creating objects

引子从本Item开始,我们就进入了第二个章节,本章节,S.M.通过对比C++的新老feature来鼓励大家使用new features. 本Item先从对象初始化开始。正文1.基础C++11中引入了{}初始化,这样使得我们的初始化变得很丰富,我们可以用{}, () 和 = 三种初始化方法:int x(0);int y = 0;int z{0};int c = {0};...

2018-06-22 10:44:05 223

翻译 《Effective Modern C++》Item 6: Use the explicitly typed initializer idiom when auto deduces undesired

引子之前Item 5介绍了auto关键字的优点,当然在Item 2我们看到了auto的一些不足,比如由于auto也是在用模板类型做推导,所以某些情况下会丢掉CV修饰符。但这个缺点似乎没有那么有说服力,毕竟这是模板类型推导的锅。本文我们继续探讨auto本身的缺点。正文先看一段代码std::vector<bool> features(const Widget& ...

2018-06-11 18:06:51 259

翻译 《Effective Modern C++》Item 5: Prefer auto to explicit type declarations.

引子这篇文章主要是branding auto这个关键字。和Item 2不同的是,本文主要是夸赞auto的优点,而Item 2则是简单的介绍。当然auto也有自己的问题,我们会在Item 2和Item 6中谈及它的问题。正文1.帮助检查初始化以及减少代码复杂度这条很容易理解意思,不细说。直接看例子int x1; // potentially uninitial...

2018-06-08 19:20:57 216

翻译 《Effective Modern C++》Item 4: Know how to view deduced types.

引子本条目就相当轻松了,主要是S.M.老爷子教大家如何查看类型,毕竟之前3节讲了这么多,对于C++1x的新手来说上手还是要花一段时间的,所以从下面3个角度介绍如何查看类型:IDE编译器时诊断运行时输出正文正文中,我们需要获得下面两个变量的类型:const int theAnswer = 42; auto x = theAnswer;auto y = &...

2018-06-04 21:36:37 261

翻译 《Effective Modern C++》Item 3: Understand decltype.

引子decltype是C++中的一个老特性了,绝大多数情况它会让你获得你期望的类型。当然,凡事都有特例,我们需要稍微注意一下,除了避免踩坑以外,也能帮助我们进一步了解类型推导。正文1.普通情形我们先预热一下,看看decltype确实是大部分时候是符合预期的:const int i = 0; // decltype(i) is const int...

2018-06-03 21:02:29 220

翻译 《Effective Modern C++》Item 2: Understand auto type deduction.

正文1.普通情形在c++11中,引入了auto关键字,关于auto关键字的推导,绝大多数和上一个Item的模板推导是一样的。例如:auto x = 27; // case 3 (x is not reference)const auto cx = x; // case 3 (cx isn't either)const auto&amp...

2018-06-03 14:54:26 205

翻译 《Effective Modern C++》Item 1: Understand template type deduction

引子老爷子上来第一大章(Item 1-4)就讨论了类型推导,依次介绍了:模版类型推导auto类型推导decltype关键字获取变量类型的正确姿势当然了,从最简单的auto关键字入手,确实是方便老c++用户熟悉c++11/14的快速方法。本文就先介绍模板类型推倒吧。正文先看一段代码template<typename T> void f(Para...

2018-06-01 18:36:47 242

翻译 《Effective Modern C++》读书笔记

最近开始从Java技术栈换回C++技术栈,于是找到了S. Meyers老爷子的《Effective Modern C++》出来重新学习C++。说实话,当年读研时读过他的经典作品《Effective C++》和《More Effective C++》,受益匪浅。这次开了个新坑,打算做个简单的读书笔记,每条笔记都和原书对应,但又有些不同:只做概要性笔记,不面面俱到,毕竟能看到《Effective...

2018-05-31 21:05:47 863

转载 Cloudera Manager Java Version

Cloudera Manager use /usr/lib/cmf/service/common/cloudera-config.sh to detect java version. The prefer order is JAVA 7 > JAVA 8 > JAVA 6 > OPENJAVA. To override default JAVA_HOME setting, should set J

2016-12-19 14:48:50 1032

原创 Hadoop权威指南读书笔记(5) - MapReducer工作过程

本文对应原书中第七章。其中的知识对于进一步调优MapReduce非常重要。我们先介绍MapReduce作业的运行过程,再介绍它的容错机制,然后会介绍其中的Shffle和Sort过程。

2016-09-22 20:54:14 1178

原创 Hadoop权威指南读书笔记(3) - Hadoop I/O

hadoop I/OWritable

2016-09-21 01:12:19 1181

原创 Hadoop权威指南读书笔记(2) — Yarn简介及Capacity & Fair Scheduler

Yarn简介Yarn(Yet Another Resource Negotiator)是hadoop2中引入的一个集群资源管理系统。

2016-07-27 19:18:31 3273

原创 Hadoop权威指南读书笔记(1) - MapReduce和HDFS简介

最近开始读<< Hadoop:the definitive guide>>,于是打算写点读书笔记,书电子版见网盘,密码v66s。

2016-07-19 18:36:44 1953

原创 图算法

其实以前也写过很多遍图上的算法了,最近要准备各大公司面试,就把模板都贴在这吧。具体的算法看给的各个连接或者去网上搜一下就可以了。图的表示图的表示主要有邻接矩阵和邻接链表两者方法,前者随机访问容易但空间太大,后者空间小但随机访问较慢而且需要动态分配内存。一般在实现一些常见算法代码时,还有一种方法来表示图,即链式前向星 。这种方法本质上还是邻接表方法,但不需要动态分配内存,只需要知道边的总数即可。int

2015-09-02 17:05:35 494

转载 临时变量,左值右值,右值引用及其作用

C++11 新增了很多功能,其中一个叫做右值引用。为了搞清楚这个东西,参考了几篇网上的博客,于是便有此文:  首先我们需要搞清楚左值和右值之分。而为了区分左值和右值,我们先注意到C++中的临时变量:C++中的临时变量指的是那些由编译器根据需要在栈上产生的,没有名字的变量。 1) 函数的返回值, 如:

2015-07-31 20:27:22 1883

原创 二叉树的遍历

二叉树的遍历主要有3种模式,前序,中序和后序。其递归版本,非常简单,大致如下:void Traversal(TreeNode* root){ if(!root) return; // visit root (preorder) Traversal(root->left); // visit root (inorder) Traversal(ro

2015-07-27 23:56:01 507

原创 Majority Element浅谈 (A linear time iceberg query algorithm)

Majority Element浅谈 (A linear time iceberg query algorithm)我们经常在面试中遇到这道题:   给定一个数组nums, 找出可能的众数(即出现次数超过一半的数字)这个题一种解法是配对比较的方法,即将其两两配对,如果相等则保留任意一个,如果不等则都舍去。如果存在众数,那最后剩下的一定是。至于是否存在众数,只需要将最后剩下的那个数遍历一遍数组,看出

2015-07-25 14:53:09 841

原创 trie树(前缀树)

trie树,又称前缀树,是一种用来处理判断某个单词在所有单词(词典)中作为前缀的次数。 它本质上是一个DFA,效率比普通hash要高,采用了以时间换取空间的策略。详细的信息可以参考《算法-前缀树》或者hihocoder中trie树中的提示。trie树的思想是及其简单的,稍微看上面的文章就可以读懂,下面直接给出模板:const int MAX = 26;struct Node{

2015-02-07 18:01:20 509

原创 树状数组

树状数组(Binary Indexed Tree)是一个用数组表示的树形结构,用来处理下面一类常见问题:已知数组A[1,n],我们在线对其进行:(1)修改某个元素A[i] (2)查询某个区间A[I具体的模板如下

2015-02-04 20:03:40 494

原创 线段树

线段树是一种比较特殊的数据结构,顾名思义就是一棵二叉平衡树里面的节点是线段(严格来说是整数区间),满足假设某个节点的区间是[a,b],那么它的左右儿子分别是[a, (a+b)/2]和[(a+b)/2+1, b] , 并且大多数情况下叶子节点是长度为1的区间。由于区间树一般用来解决和整数有关的问题,因此也可以认为叶子节点长度为0,因为只含一个整数。  因此它和另一种数据结构区间树是不同的,区间树以红

2015-02-04 19:27:05 686

原创 数位DP 浅谈(hihocoder 1033:交错和)

数位DP是一种比较特殊的DP方法,之所以了解到是为了尝试解决hihocoder上一道交错和的题目,更详细的信息请参考这两个文献:文章《浅谈数位类统计问题》 和 讲义《初探数位DP》事实上在ACM中,我们经常遇到如下类问题:求整数区间[L,R]中满足条件Q的整数的个数(或它们的和、积等)对于这类问题,乍一看是数论问题,但是却发现条件Q一般不是那么明显,找不到简单的规律;尝试逐个枚

2015-02-03 13:16:36 7336 8

原创 最大带权子树(hihocoder变种题)

题目来源: http://hihocoder.com/contest/mstest2015jan2/problem/3本质上这道题是说,给定一个含有N个节点的树,和K个规定节点, 要求找到恰好包含M各节点的子树T, 使得树T在满足包含前面K个规定节点的前提下,使得子树T的权重最大,如果存在则输出权重,不存在这样的子树则输出-1很容易想到这道题是最大带权子树的变种, 但是题目

2015-01-10 23:49:21 1597

原创 Leetcode OJ 刷题

Two Sum:水题,排序,

2014-05-19 11:40:22 2930

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除