问个C++ 11新特性的问题,疑惑

kbsoft kbsoft 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
看到一个stl hash table的源码实现中,一个成员函数为何提供2个版本,只是形参不一样,实现完全不一样。

既然有了const hash_map&m 为何要有hash_map&& m呢?不解。

258   void copy_from(hash_map&& m)
259 {
260 if(m.empty()) return;
261 for(size_t idx = 0; idx < m.capacity_; ++idx)
262 {
263 if(is_key_deleted(m.buckets_[idx].first) ||
264 is_key_empty(m.buckets_[idx].first))
265 continue;
266 _insert(std::move(m.buckets_[idx]));
267 }
268 }
269 void copy_from(const hash_map& m)
270 {
271 if(m.empty()) return;
272 for(size_t idx = 0; idx < m.capacity_; ++idx)
273 {
274 if(is_key_deleted(m.buckets_[idx].first) ||
275 is_key_empty(m.buckets_[idx].first))
276 continue;
277 _insert(m.buckets_[idx]);
278 }
279 }
...全文

相关推荐

Visual C++开发答疑300问+随书光盘源码

好东西就要和大家一起分享 别谢我我是雷锋 ~~ 哈哈

naruto与程序员

C++ 11新特性之大括号初始化详解

主要介绍了C++ 11新特性之大括号初始化的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。

weixin_38609732

C++11新特性之auto的使用

前言 C++是一种强类型语言,声明变量时必须明确指出其类型。但是,在实践中,优势我们很难推断出某个表达式的值的类型,尤其是随着模板类型的出现,要想弄明白某些复杂表达式的返回类型就变得更加困难。为了解决这个问题,C++11中引入的auto主要有两种用途:自动类型推断和返回值占位。auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除。前后两个标准的auto,完全是两个概念。 一、自动类型推断 auto自动类型推断,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推断,可以大大简化我们的编程工作。下面是一些使用auto的例子。 #includ

weixin_38643269

C++ 11 新特性 之 Enum Class

C++ 11起引入的 enum class相对于传统的enum有了很多变化,主要是针对传统 enum 在编程过程中出现的值类型名称作用域、enum类型安全问题进行了改良. 一、传统enum类型     先来看看传统enum在编程过程中可能遇到的一些问题:     1、两个 enum 类型声明时不能有相同值名称声明: #include using namespace std; int main() { // Defining enum1 Gender enum Gender { Male, Female }; // Defining enum2 Gender2 with same v

weixin_38680247

深入理解C++11:C++11新特性解析与应用(完整、扫描版)

书籍《深入理解C++11:C++11新特性解析与应用》的高清完整扫描版本

lzn993
评论 2
收藏 已收藏
分享
返回顶部
kbsoft
C++ 语言 65,214 成员 250,514 内容