摘要:SFINAE、冗长的模板错误,再见!Concepts、约束,你好!
阅读全文
摘要:从整数划分问题到C++值元编程——constexpr、模板与函数式。
阅读全文
摘要:从C++98到C++17,表达式类别与时俱进地改变着。引用绑定、auto、decltype、拷贝省略等功能与表达式类别息息相关。
阅读全文
摘要:结构化绑定是C++17添加的新语法,把名字绑定到一个对象的成员上。与引用类似,结构化绑定都是既有对象的别名;与引用不同,结构化绑定不一定是引用类型。
阅读全文
摘要:Lippman在《深度探索C++对象模型》的前言中写道: I have heard a number of people over the years voice opinions similar to those of your colleagues. In every case, those o
阅读全文
摘要:引言 最近在学编译原理,一门理论与实践结合的课程,我把作业发到博客里,希望能与大家交流分享。 词法分析一章有一道比较复杂的作业题如下: 本题是一个编程问题,在本题目中,你将完整的实现Thompson算法、子集构造算法和Hopcroft算法。为了帮助你开始,请下载如下链接中的代码并根据代码运行时的提示
阅读全文
摘要:引言 要是世上不曾存在C++14和C++17该有多好! 是好东西,但是让编译器开发者痛不欲生;新标准库的确好用,但改语法细节未必是明智之举,尤其是3年一次的频繁改动。C++带了太多历史包袱,我们都是为之买账的一员。 我没那么多精力考虑C++14/17的问题,所以本文基于C++11标准。 知其所以然,
阅读全文
摘要:拉阅读量第二弹,希望你能有所收获。 "我不想听你放那么多屁,我只想知道怎么加速 !" digitalWrite有多慢 这个程序测试调用10次某语句需要的时间。在山寨版Uno Rev3上运行,程序输出: 第一组空函数是对照组, 的结果表明 函数没有什么overhead。第二组 的成绩为36μs,无所谓
阅读全文
摘要:本文是``系列的第4篇。 成员指针是一个非常具有C++特色的功能。更低级的语言(如C)没有类,也就没有成员的概念;更高级的语言(如Java)没有指针,即使有也不会有成员指针这么拗口的东西。 上回在Stack Overflow上看到一个问题,C++是否允许 这种写法。我猜他是从C 过来的。在C++中,
阅读全文
摘要:本文是``系列的第3篇。 引用传参 我有一个函数: 因为参数类型是 ,所以函数能够修改传入的整数,而非其拷贝。 然后我用 把它和一个 绑定起来: int i = 1; auto f = std::bind(modify, i); f(); std::cout `对象。 reference_wrapp
阅读全文
摘要:C++的核心理念之一是RAII,Resource Acquisition Is Initialization,资源获取即初始化。资源有很多种,内存、互斥锁、文件、套接字等;RAII可以用来实现一种与作用域绑定的资源管理方法(如 );这些都不在本文的讨论范围之内。 内存是一种资源。从字面上来看,“资源
阅读全文
摘要:在C++11中, 不再只有逻辑与的含义,还可能是右值引用: 但也不尽然, 还可能是转发引用: “转发引用”(forwarding reference)旧称“通用引用”(universal reference),它的“通用”之处在于你可以拿一个左值绑定给转发引用,但不能给右值引用: 一个函数的参数要想
阅读全文
摘要:C++为随机数提供了两套工具:C风格的和C++风格的。 C风格 C为随机数提供的工具是 、`srand RAND_MAX 中。 为`rand srand(1) rand 0`到 ,`RAND_MAX 32767 32767`。 伪随机数看似随机,实则是有规律可循的,对于相同的种子值, 产生的序列完全
阅读全文
摘要:有个很奇怪的现象,我自认为写得好的文章阅读量只有一百多,随手写的却有一千多——要么是胡搞,要么是比较浅显。纵观博客园里众多阅读过万的文章,若非绝世之作,则必为介绍入门级知识的短文。为了让我的十八线博客上升到十七线,我打算写几篇短文。当然,短不等于随便,不等于不负责任。客观的,要有确凿的依据,代码必须
阅读全文
摘要:值多态是一种介于传统多态与类型擦除之间的多态实现方式,借鉴了值语义,保留了继承,在单继承的适用范围内,程序和程序员都能从中受益。
阅读全文
摘要:前言 最近想起半年前鸽下来的Haskell,重温了一下忘得精光的语法,读了几个示例程序,挺带感的,于是函数式编程的草就种得更深了。又去Google了一下C++与FP,找到了一份近乎完美的讲义,然后被带到C++20的ranges library,对即将发布的C++20满怀憧憬。此时,我猛然间意识到,看
阅读全文
摘要:本文隶属于AVR单片机教程系列。 在系列教程的最后一篇中,我将向你推荐3个可以深造的方向:C++、事件驱动、RTOS。掌握这些技术可以帮助你更快、更好地开发更大的项目。 本文涉及到许多概念性的内容,如果你有不同意见,欢迎讨论。 关于高层 这一篇教程叫作“走向高层”。什么是高层? 我认为,如果寥寥几行
阅读全文
摘要:《玩玩24点》系列: "上篇" "中篇" 下篇 序 在上篇中,我用上位机程序遍历了4个1~13的数的1820种组合,通过递归穷举计算出其中1362组的24点接法,并转换为二进制形式,放到单片机程序中,减少了单片机24点游戏程序的计算量,获得了不错的游戏体验。 上篇的最后留了一个疯狂暗示,但时至如今我
阅读全文
摘要:有时候我们会不给C类成员变量赋初始值,或是因为忘记在构造函数中指定(C11可以写在类内),或是觉得没有必要写。然而,因为觉得编译器会把变量赋成0而不写是错误的。本文通过C++标准来解释这个问题。 本文基于N3337(C++11草案)标准。 关于没有初始化器的对象,在8.5-11中有提及: If no
阅读全文
摘要:《玩玩24点》系列: 上篇 中篇 下篇 最近班里开始玩24点了。起因是一个在计算器上两人比赛24点的程序,但计算器判断一组数据是否有解需要15秒,于是这个程序就没有判定有解这一功能。 这么慢的速度我当然看不下去,但去优化那个BASIC程序是不可能的,我就开始写自己的24点程序。正好之前的算法课中递归
阅读全文