c/c++
文章平均质量分 82
yg@hunter
这个作者很懒,什么都没留下…
展开
-
深入理解 std::move和std::forward
1、移动语义是c++11引入,它的引入是为了解决对象赋值带来的开销,移动的实质是对象所有权的转移,它要比复制更为高效。2、为了实现移动语义,编译器需要能够识别一个变量在什么时候只是个临时值,指没有名字的变量。这里引入了左值、右值的概念(继承自C语言):①左值:通常出现在赋值运算符的左侧(也可以是在右侧),它是在内存中有位置的对象,具有可访问性和可识别的内存地址。②右值:通常出现在赋值运算符的右侧,它是一个临时对象或者子对象,右值也可以占用栈上的数据区的内存,但是这个内存是暂时分配的,而且赋值原创 2021-04-14 09:34:48 · 545 阅读 · 0 评论 -
c/c++动态检测内存错误利器 - ASan
ASan,即Address Sanitizer,是一个适用于c/c++的动态内存错误检测器,它由一个编译器检测模块(LLVM pass)和一个替换malloc函数的运行时库组成,在性能及检测内存错误方面都优于Valgrind。原创 2021-01-24 22:08:52 · 5096 阅读 · 0 评论 -
c++11下的 std::pair & std::tuple用法
在C++标准库中,pair类最早出现在c++98中,它提供一个简单的类,可以将两种不同(或者相同)的值聚合在一起,类似键值对(key/value)的形式。而tuple类最早在TR1中引入,是pair类的扩展泛化,允许最多10个不同(或相同)类型的元素。在c++11中,tuple类重新实现了,基于可变参模块,可以容纳任意多的异质元素。pair类可以把两个元素作为一个整体,用处也比较广,如STL里的ap、multimap、unordered_map、unordered_multimap这些键值对容.原创 2020-08-09 21:21:48 · 1275 阅读 · 0 评论 -
c/c++中输入输出处理 按分隔符(换行、逗号、空格等)读取
读取输入中字符流的常用接口为getline,其有两种实现:一个stream类中提供的getline()函数,另一个是string中提供的getline()函数,本文示例了各种读取方式。原创 2020-08-09 16:49:41 · 17163 阅读 · 0 评论