所以我昨天在YouTube上观看了有关C++-11右值引用和移动语义的视频。我认为我大致理解了概念,但今天当我与TA一起查看我的代码时,他问我为什么没有使用引用(例如
std :: pair <HostName, IPAddress>& p )在下面的代码中。在这种情况下,我根本没有考虑过它,但当他问时,我记得视频说“在C++-11中,通常应该使用按值传递”。
我的问题是:在下面的代码中,std :: pair <HostName, IPAddress> p 是否像std :: pair <HostName, IPAddress>& p 一样更好?将使用移动语义吗?会有所不同吗?
IPAddress NameServer::lookup( const HostName& host ) const {
auto it = std::find_if( vec.begin(), vec.end(),
[host] ( std::pair<HostName, IPAddress> p ) {
return p.first == host;
} );
...
}