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

kbsoft 2013-08-08 09:51:06
看到一个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 }
...全文
84 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2013-08-08
  • 打赏
  • 举报
回复
自己google 右值引用
kbsoft 2013-08-08
  • 打赏
  • 举报
回复
我知道hash_map&& m的作用是可以对形参做任意修改,但修改形参的目的是啥?

65,199

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧