摘要: 考虑如下代码: C++11引入了promise和future,可以使用task-based思维 看看,是不是精简了很多代码?现在继续精简,用std::async代码如下: 另外,介绍个C++在线编译器 https://wandbox.org/ 阅读全文
posted @ 2018-03-14 17:13 thomas76 阅读(386) 评论(0) 推荐(0)
摘要: 现代的C++,比较笼统。最近10多年的东西是否是现代的呢?我认为“时髦”这个词更准确一些。每个年代,时髦总是标新立异的,总是被年龄大一些的人看不惯的(虽然这些人也曾经“赶过时髦”)。Modern C++就是用最时髦的东西去装饰您的代码。但是本质的东西还是没有变。改革初期,最时髦的服饰是喇叭裤,霹雳舞 阅读全文
posted @ 2018-03-14 14:57 thomas76 阅读(2511) 评论(1) 推荐(2)
摘要: 考虑下面的代码: case 1:是否忘记书写break;还是有意放过,意图继续执行case 2?编译器当然不会弄明白了,就报告一个警告。 传统的解决方法是(VS环境): #pragma warning( push )#pragma warning( disable : 4705 )// Some c 阅读全文
posted @ 2018-03-13 16:00 thomas76 阅读(353) 评论(0) 推荐(0)
摘要: C++17 收编了boost库的 boost::any , boost::optional, boost::variant any可以模仿动态类型语言的变量。注意,any不是模板类,因此,可以这样做: 考虑一个函数返回用户信息。当用户存在时,需要想办法告知调用者。可以这样: 其它方式:返回个(Use 阅读全文
posted @ 2018-03-13 14:24 thomas76 阅读(441) 评论(0) 推荐(0)
摘要: 考虑一个算法,代码如下: for_each对于每一个数组arr的成员,都去调用了process(int& x)。这个过程是单线程(main所在的主线程)进行的。 如果想增加性能,让多线程并行的处理,需要做一些改造。例如,创建线程1处理0-30000项,创建线程2处理30001-60000项,主线程处 阅读全文
posted @ 2018-03-13 10:42 thomas76 阅读(3686) 评论(1) 推荐(0)
摘要: 编译期的常量表达式,顾名思义是在编译期就求值得表达式。例如: 这些都是老套的传统代码,没什么稀奇的。现在改一下代码,如下所示: 不奇怪的是,编译器识别出我的代码是傻子逻辑,因为N3是无法在编译期确定的,只能在运行期求值。 引人注意的是地方是,同样的const int 修饰的变量,却具有更隐蔽的性质。 阅读全文
posted @ 2018-03-11 19:16 thomas76 阅读(425) 评论(0) 推荐(0)
摘要: C语言时代auto是栈上的自动变量的意思。如果没书写,默认就是auto C++11开始后,auto被引入了。上述语句就是非法的,因为auto有自动推导类型的意思,此时就不能手动指定类型了。 C++的auto推导,b被推导为int。如果我们想让b的类型与初始化表达式的类型一致,auto将不能胜任。 不 阅读全文
posted @ 2018-03-10 17:45 thomas76 阅读(440) 评论(0) 推荐(1)
摘要: 考虑一个模板类,创建它的一个对象,代码如下: 为此,传统的解决方法是创建一个make_xxx模板函数,利用模板函数自动推导模板参数的超能力。 std::make_pair , std::make_tuple , 都是这个原理。在C++17里,可以根据构造函数的参数,自动推导模板类的类型参数 这样,对 阅读全文
posted @ 2018-03-10 15:21 thomas76 阅读(658) 评论(0) 推荐(0)
摘要: 考虑最古老的TagDispatch技术,此技术广泛用于STL标准库 现在用C++17重写,可以把三个分离的length函数,合并成一个。代码如下: 如果没有机会使用TagDispatch技术,那一定是因为遇到基本数据类型或是自己无法修改源代码的类型。例如:int,就不能获得int::Tag这种信息。 阅读全文
posted @ 2018-03-08 20:51 thomas76 阅读(1289) 评论(0) 推荐(0)
摘要: 考虑一个程序库的设计者,发明了一个Kath类。在Kath.h: static成员变量需要在某个编译单元(以后简称为cpp)中定义。在Kath.cpp: 在两个地方处理同一个事物,这是非常不爽的。特别是对程序库的设计者,如果希望提供只有头文件的一套库(类似STL),就面对更大的麻烦。 有一些worka 阅读全文
posted @ 2018-03-08 14:18 thomas76 阅读(483) 评论(0) 推荐(0)