首先,关于allocator戳旁边→维基百科-分配器(C++)这次我只用了其中的一部分API,来实现一个简易的vector容器,这个简易版vector实现了插入、删除、查找等简易功能,由于对右值的理解不足,所以这次并未实现关于右值的API。【MSDN-class allocator_base API...
分类:
其他好文 时间:
2014-09-24 00:27:55
阅读次数:
284
1、右值引用引入的背景临时对象的产生和拷贝所带来的效率折损,一直是C++所为人诟病的问题。但是C++标准允许编译器对于临时对象的产生具有完全的自由度,从而发展出了Copy Elision、RVO(包括NRVO)等编译器优化技术,它们可以防止某些情况下临时对象产生和拷贝。下面简单地介绍一下Copy E...
分类:
编程语言 时间:
2014-09-21 01:09:39
阅读次数:
405
http://jxq.me/2012/06/06/%E8%AF%91%E8%AF%A6%E8%A7%A3c%E5%8F%B3%E5%80%BC%E5%BC%95%E7%94%A8/#thbeckerC++0x标准出来很长时间了,引入了很多牛逼的特性[1]。其中一个便是右值引用,Thomas Beck...
分类:
编程语言 时间:
2014-09-20 23:44:19
阅读次数:
354
左值和右值:左值必须要有内存实体,能放在赋值号左边的值寄存器的数据一般都是右值,能放在赋值号右边的值int num = 1;num+1 的值不在内存,在寄存器里(CPU里)。绝对不能取寄存器地址。#include int main(){ int num = 3; int data = 0; _asm...
分类:
其他好文 时间:
2014-09-19 21:04:06
阅读次数:
441
# 转自 IBM 编译器中国开发团队的《C++11中的string - atoi/itoa》 在C++11中,由于右值引用的引入,常为人所诟病std::string的性能问题得到了很大的改善。另外一方面,我们也可以看到新语言为std::string类增加了...
分类:
编程语言 时间:
2014-09-19 15:48:45
阅读次数:
311
++(a++) a++相当于int a;{int temp=a;a++;teturn temp;}所以我们可以将++(a++)看成++temp;而temp显然是一个右值,所以不能用啊~~ L-value中的L指的是Location,表示可寻址。The "l" in lvalue can be tho...
分类:
编程语言 时间:
2014-09-14 23:35:27
阅读次数:
227
16.47 编写你自己版本的翻转函数,通过调用接受左值和右值引用参数的函数来测试它。#include#include#includeusing namespace std;template int compare(const T &a ,const T &b){ if(aauto sum(T ...
分类:
其他好文 时间:
2014-09-01 22:21:03
阅读次数:
206
无限分级树形结构是在系统开发中很常见的,如下图在之前实现这样的菜单一直是使用传统的方法,看数据表结构就一目了然parent_id记录其直接父节点,组合树形结构的关键字段;parent_list记录其所有父节点,便于查询某个节点下所有子节点(一般使用MySQL的FIND_IN_SET函数),相对冗余。...
分类:
其他好文 时间:
2014-08-26 15:09:16
阅读次数:
214
每一个表达式都有一个结果,字面值常量也是表达式,其结果就是值本身。除了特殊用法外表达式的结果是右值。是左值的情况也有,比如++i;这个表达式就是一个左值;还有逗号运算符的结果是表达式最右侧操作符德值,如果最右是一个左值的话,那整个逗号表达式就是左值。
表达式涉及到操作符和操作数,操作符有优先级规则,有结合性,还有操作数的求值顺序。就操作数的求值顺序而言,比如f1() * f2();两个函数...
分类:
编程语言 时间:
2014-08-23 17:46:11
阅读次数:
229
这是 thread 的construct定义:default (1)thread() noexcept;initialization (2)template explicit thread (Fn&& fn, Args&&... args);copy [deleted] (3)thread (con...
分类:
编程语言 时间:
2014-08-19 16:23:34
阅读次数:
304