gpt4 book ai didi

c++ - 交换 std::vector 作为函数参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:54 25 4
gpt4 key购买 nike

我想交换一个 std::vector 作为函数参数,这样就不必复制 vector 。

像这样:

function( std::vector< MyType >().swap( my_vector ) );

或者在我的例子中是这样的:

std::make_pair( 0, std::vector< MyType >().swap( my_vector ) );

当然 std::vector::swap 返回 void,而不是创建的 vector 。

有办法吗?

最佳答案

使用任何现代编译器,然后您可以使用 std::move,它获取您的 vector 并将其作为右值返回:

function(std::move(my_vector));

如果这对你不可用,你可以尝试这样的事情:

template<typename T>
T Move(T & val)
{
T ret;
ret.swap(val);
return ret;
}

如果你有任何运气,请告诉我。

或者,您可以在创建 vector 后将其直接交换到对中:

std::pair<int, std::vector<MyType> > p;
p.second.swap(my_vector);

不过,如果您需要 std::make_pair 的返回值作为右值,我想这对您没有帮助。

关于c++ - 交换 std::vector 作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9237968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com