摘要: std::move是一个用于提示优化的函数,过去的c++98中,由于无法将作为右值的临时变量从左值当中区别出来,所以程序运行时有大量临时变量白白的创建后又立刻销毁,其中又尤其是返回字符串std::string的函数存在最大的浪费。比如:1 std::string fileContent = “oldContent”;2 s = readFileContent(fileName);因为并不是所有情况下,C++编译器都能进行返回值优化,所以,向上面的例子中,往往会创建多个字符串。readFileContent如果没有内部状态,那么,它的返回值多半是std::string(const std::st 阅读全文
posted @ 2012-07-20 17:52 腾云生 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 今天看到boost::unordered_map, 它与 stl::map的区别就是,stl::map是按照operator<比较判断元素是否相同,以及比较元素的大小,然后选择合适的位置插入到树中。所以,如果对map进行遍历(中序遍历)的话,输出的结果是有序的。顺序就是按照operator< 定义的大小排序。而boost::unordered_map是计算元素的Hash值,根据Hash值判断元素是否相同。所以,对unordered_map进行遍历,结果是无序的。用法的区别就是,stl::map 的key需要定义operator< 。 而boost::unordered_map 阅读全文
posted @ 2012-07-20 14:45 腾云生 阅读(3279) 评论(0) 推荐(0) 编辑