搜尋

首頁  >  問答  >  主體

c++ - 这里为什么使用引用接收返回值

hash_map<string, list<uint32_t> > g_hmLimits;
...
list<uint32_t>& lsErrorTime = g_hmLimits[strDomain];
lsErrorTime.clear();
为什么返回值是:list<uint32_t>& 类型呢?
hash_map中的value存储的是一个list对象,并不是对象的指针,这个时候返回的Value是原来Value的副本吗?

巴扎黑巴扎黑2772 天前369

全部回覆(1)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-17 14:53:17

    先強調一點,hash_map不是C++標準函式庫的東西,沒有通行的標準,一下所說都是基於C++11的unordered_map而言的。
    unordered_map中重載[]操作符的定義為

    mapped_type& operator[] ( const key_type& k );
    mapped_type& operator[] ( key_type&& k );

    可以看到,這裡回傳的就是引用,所以用引用來接受是沒有問題的。

    回覆
    0
  • 取消回覆