c++ - 这里为什么使用引用接收返回值
本文介绍了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的副本吗?
解决方案
先强调一点,hash_map
不是C++标准库的东西,没有通行的标准,一下所说都是基于C++11的unordered_map
而言的。
在unordered_map
中重载[]
操作符的定义为
mapped_type& operator[] ( const key_type& k );
mapped_type& operator[] ( key_type&& k );
可以看到,这里返回的就是引用,所以用引用来接受是没有问题的。
这篇关于c++ - 这里为什么使用引用接收返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文