首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
C++
拉普拉斯妖kk
创建于2021-11-20
订阅专栏
关于C++技术的那些事
等 11 人订阅
共29篇文章
创建于2021-11-20
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
基于模板的类型擦除
在C\C++中主要有三种类型擦除的方式: 基于void*的类型擦除;面向对象的类型擦除;基于模板的类型擦除。
学懂现代C++——《Effective Modern C++》之转向现代C++
现代C++中像auto、智能指针、移动语义等都是一些重大的优化特性,但也有一些像constexpr、nullptr等等这样一个小的特性。这章的内容就是这些小特性的集合。
学懂现代C++——《Effective Modern C++》之类型推导和auto
本文主要对《Effective Modern C++》的前两章——类型推导和auto,做了知识点的总结。书中有更详细的推导和讲解过程,感兴趣的同学还是强烈建议大家去读原书。
Windows下编译和使用websocketpp
编译安装Boost WebSocketpp依赖于Boost,因此在使用WebSocketpp前需要编译安装Boost。
《More Effective C++》技术篇——要求(或禁止)对象产生于heap之中
总结了《More Effective C++》技术篇中——要求(或禁止)对象产生于heap之中的内容。
《More Effective C++》技术篇——限制某个class所能产生的对象数量
只要继承Counted template就可以限制class所能产生的对象数量,超过了设置的maxObjects就会抛出异常。
《More Effective C++》技术篇——将constructor和non-member function虚化
总结了下《More Effective C++》技术篇——将constructor和non-member function虚化。
C++11的condition_variable实现WaitForSingleObject功能
在C++11中通过mutex和condition_variable来实现WaitForSingleObject功能
C++大厂面试真题
map和set都是C++的关联容器,其底层实现都是红黑树。 map中的元素是key-value(键-值)对:关键字起到索引的作用,值则表示与索引相关联的数据;set是关键字的简单集合,set中的元素都只包含一个关键字。 set的迭代器是const的,不允许修改元素的值;map允…
《More Effective C++》总结笔记(三)
80-20法则说:一个程序80%的资源用于20%的代码身上。是的。80%的执行时间花在大约20%的代码身上,80%的内存被大约20%的代码使用,80%的磁盘访问动作由20%的代码执行,80%的维护力气花在20%的代码上面。 不必拘泥于法则的数字,其基本重点是:软件的整体性能几乎…
青蛙跳问题为什么是斐波那契数列
在面试中我们可能会遇到青蛙跳的问题:一只青蛙一次可以跳上一级台阶,或者跳上二级台阶。那么如果总共有N级台阶,问这只青蛙总共有多少种跳法? 首先,我们考虑最简单的情况,如果只有一级台阶,那显然青蛙只有一种跳法。如果只有二级台阶,那么青蛙就有两种跳法,一种是每次跳一级,总共跳二次,…
《More Effective C++》总结笔记(二)——异常
只要坚持这个规则,把资源封装在对象内(类似智能指针shared_ptr),通常便可以在exceptions出现时避免泄露资源。 简单来说就是,当有资源可能在函数抛异常时而无法释放,这时可以将资源封装到对象内(RAII),利用对象的析构函数来自动释放资源,这样即使有excepti…
C++程序性能优化指南
《More Effective C++》书中效率部分第一条就是80—20准则。说得是——大约 20%的代码使用了 80%的程序资源;大约 20%的代码耗用了大约 80%的运行时间;大约 20%的代码使用了 80%的内存。因此,一些简单的优化也能显著提高程序性能。 先完成程序功能…
c++关键字typeid
typeid是c++的一个关键字,typeid操作符的返回结果是标准库类型type_info对象的引用。 但是,C++标准并没有明确定义type_info,其具体实现依赖于各个编译器。标准只规定了typeid操作符必需实现如下四种操作: t.name() | 返回类型的C-st…
一文读懂C++内存对齐
64位操作系统意味着其cpu拥有更大的寻址能力。理论上来说,其性能相比于32位操作系统会提升1倍。但是这也需要在64位操作系统上运行的软件也是64位的。 软件中数据类型的的字节数大小其实和操作系统是多少位的没有关系,而是由编译器决定的。也就是说数据结构占多少位取决于在软件编译时…
《More Effective C++》总结笔记(一)——基础议题、操作符
首先你必须认知一点,没有所谓的 null reference。 由于reference一定得代表某个对象,C++因此要求references必须有初值。 Pointers和references之间的另一个重要差异就是,pointers可以被重新赋值,指向另一个对象,refere…
c++11强化知识点
c++11提供了std::initializer_list,将使得类对象的初始化也可以和普通数组或者POD数据一样使用初始化列表的方式。只要为类对象提供初始化列表构造函数即可。 std::initializer_list也可以作为函数的参数使用。 初始化列表std::initi…
VSCode C++开发环境配置文件(Windows&Mac)
Windows中使用MSVC来编译源文件一定要通过VS提供的Developer Command Prompt(开发人员命令提示)工具来打开。 cd到源文件的工作区。 输入“code .”,之后就会自动打开VSCode。 想调试源文件就将launch.json中的stopAtEn…
C++实现简单的反射——根据字符串创建类对象
最近项目需求中需要一个关键功能——根据字符串创建了类对象。由于C++没有类似Java、C#这类动态语言中的反射机制,所以在C++程序中一般用if...else...或者switch来将字符串或者枚举值与类对象的创建方法来进行对应的映射。这里如果我们实现一个简单的反射机制,可以根…
std::string的format一种实现
由于std标准库的string没有实现类似CString的Format函数,使得我们有时候不得不使用istream、ostream来格式化字符串,然而这些类使用起来又复杂繁琐。
下一页