![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL
文章平均质量分 71
yg@hunter
这个作者很懒,什么都没留下…
展开
-
深入理解 std::move和std::forward
1、移动语义是c++11引入,它的引入是为了解决对象赋值带来的开销,移动的实质是对象所有权的转移,它要比复制更为高效。 2、为了实现移动语义,编译器需要能够识别一个变量在什么时候只是个临时值,指没有名字的变量。 这里引入了左值、右值的概念(继承自C语言): ①左值:通常出现在赋值运算符的左侧(也可以是在右侧),它是在内存中有位置的对象,具有可访问性和可识别的内存地址。 ②右值:通常出现在赋值运算符的右侧,它是一个临时对象或者子对象,右值也可以占用栈上的数据区的内存,但是这个内存是暂时分配的,而且赋值原创 2021-04-14 09:34:48 · 569 阅读 · 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 · 1412 阅读 · 0 评论