在C++11标准之前,C++中默认的传值类型均为Copy语义,即:不论是指针类型还是值类型,都将会在进行函数调用时被完整的复制一份!
对于非指针而言,开销及其巨大!
因此在C++11以后,引入了右值和Move语义,极大的提高了效率;
本文介绍了在此场景下了两个常用的标准库函数:move和forward;
源代码:
在C++11标准之前,C++中默认的传值类型均为Copy语义,即:不论是指针类型还是值类型,都将会在进行函数调用时被完整的复制一份!
对于非指针而言,开销及其巨大!
因此在C++11以后,引入了右值和Move语义,极大的提高了效率;
本文介绍了在此场景下了两个常用的标准库函数:move和forward;
源代码:
默认情况下,我们在win10下使用vcpkg安装的库都是x86的,对于x64的库,我们还需要手动指定参数;
但是在x64大行其道的现在,我们更希望能默认安装x64的库,此时只需要配置环境变量即可:
VCPKG_DEFAULT_TRIPLET=x64-windows
流水账似的,记录一下五一假期都干了啥?
fmt库是一个先进的文本格式库,具有现代语言的特征,用来代替C的stdio和C++中的iostreams;
本文讲解了如何使用C++的开源库:fmt;
源代码:
开源库地址:
Source Code:
In this passage we will talk about Object Slicing in C++(A very common occurrence in OOP).
For historical reasons, and for compatibility with C, string literals are not standard library strings in C++.
This passage shows a simple way to accomplish this.
之前在一次MySQL的查询中,偶然间发现了即使在字符串查询条件的后面加空格也能查出数据来!
本文从多个场景对该现象进行了分析;
如何激怒一个Rust爱好者?让他用Rust实现一个双向链表即可!
总所周知,Rust中是不能同时存在两个可变引用的,所以在Rust中实现双向链表就会变得非常反人类(因为需要同时存在前后节点同时指向对方的情况);
同时,双向链表也引入了循环引用的问题,这也是导致内存难以释放的一个场景;
没想到一个简简单单的双向链表居然涉及如此之多的问题!
本文就使用Unsafe Rust实现了双向链表;
源代码:
一致性Hash算法是解决分布式缓存等问题的一种算法;
本文介绍了一致性Hash算法的原理,并给出了一种实现和实际运用的案例;
源代码:
我们都知道MySQL中的事务默认情况下隔离级别是可重复读,即别的事务对数据的操作不影响当前事务;
但是这里有一个坑可能会打破你对可重复读的认知;