【发布时间】:2012-03-03 12:34:05
【问题描述】:
我想换入 std::vector 作为函数参数,这样就不必复制向量。
类似这样的:
function( std::vector< MyType >().swap( my_vector ) );
或者在我的情况下是这样的:
std::make_pair( 0, std::vector< MyType >().swap( my_vector ) );
当然,std::vector::swap 返回的是 void,而不是创建的向量。
有没有办法做到这一点?
【问题讨论】:
-
你为什么不使用参考?
-
@perreal 因为我无法控制该功能。 (
std::make_pair) -
@Jay:如果函数复制了它的参数,而你不能改变这个函数,就不可能让函数不复制它的参数。 (当然,在
std::make_pair的情况下,有一个版本通过右值引用获取其参数并将它们转发给pair构造函数,因此移动参数而不是复制它(如果参数是右值引用))
标签: c++ stl parameters parameter-passing stdvector