本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 我确信我们都同意使用STL容器是一个好主意,并且我希望在Item 18中能让你相信使用std::unique_ptr也是一个好主意,但是我猜想,我们中没有任何一个人想多次写这样的类型:"std::unique_ptr<std::unordered_map<std::string, std::string>>".光是想想就感觉,得&…
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 啊,简单愉快的代码: int x; 等等,讨厌!我忘了初始化x,所以它的值是不确定的.可能,它可能被初始化成了0,这取决于你的编译环境.哎. 不要紧,让我们简单并愉快地声明一个局部变量,通过解引用一个iterator来初始化它: template<typename It> void dwim(It b, It e) { while(b != e){ typena…
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 一般情况下,在花括号中声明一个name(包括变量名,函数名),这个name的可见性会被限制在花括号的作用域内.对于在C++98风格的enum中声明的enum成员却不是这样.这些enum成员的name属于的作用域是enum所在作用域,这意味着在这个作用域中,不能拥有相同的name: enum Color { black, white, red }; //black,…
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 先让我们看一些概念:字面上的0是一个int,不是一个指针.如果C++发现0在上下文中只能被用作指针,它会勉强把0解释为一个null指针,但这只是一个应变的方案.C++的主要规则还是把0视为int,而不是一个指针. 实际上,NULL也是这样的.NULL的情况,在细节方面有一些不确定性,因为C++标准允许它的实现不管是不是int只需要给出一个数值类型(比如,long)…
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 STL中的const_iterator等价于pointers-to-const(指向const值的指针).它们指向的值不能被修改.使用const的标准做法是,每当你不需要修改iterator指向的值的时候,你都应该使用const_iterator. 这对C++98和C++11来说都是对的,但是在C++98中,const_iterator只能算勉强支持.我们无法简单…
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 如果你为其他开发者提供代码,并且你想阻止他们调用一个特定的函数,你通常不会声明这个函数.函数不声明,函数就不会被调用.太简单了!但是有时候C++会帮你声明函数,并且如果你想要阻止客户调用这些函数,简单的事情就不再简单了. 这种情况只发生在"特殊的成员函数"身上,也就是,当你需要这些成员函数的时候,C++会自动帮你生成.Item 17详细地讨论了这些函数,…
#include和前置声明(forward declaration) 1.    当不需要调用类的实现时,包括constructor,copy constructor,assignment operator,member function,甚至是address-of operator时,就不用#include,只要forward declaration就可以了. 2.   当要用到类的上面那些“方法”时,就要#include   例子: boy.h #ifndef __BOY__H_ #defi…
为什么需要索引模板? 在实际工作中针对一批大量数据存储的时候需要使用多个索引库,如果手工指定每个索引库的配置信息(settings和mappings)的话就很麻烦了. 所以,这个时候,就存在创建索引模板的必要了!!1 索引可使用预定义的模板进行创建,这个模板称作Index templates.模板设置包括settings和mappings,通过模式匹配的方式使得多个索引重用一个模板. 更多,请见 https://www.elastic.co/guide/en/elasticsearch/refe…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue-router之使用路由别名定制(alias)</title> <script src="vue.js"></script> <script src="node_modules/vue-rou…
本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者:宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 前向声明 编程定律 先强调一点:在一切可能的场景,尽可能地使用前向声明(Forward Declaration).这符合信息隐蔽的原则. 一个例子 regmap 那么前向声明究竟是个什么鬼?在内核写代码和看代码的童鞋,经常发现Linux内核里面充斥着这样的代码,比如 include/vim linux/regulator/driver.h…