所以我昨天在 youtube 上观看 c++ 视频,偶然发现了一个关于 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;
} );
...
}