如何解决通过保留和复制,还是通过创建和交换来复制向量更有效?
如果您通过引用发送参数,则第二个示例不起作用。你的意思
void copyVecFast(vec<int> original) // no reference
{
vector<int> new_;
new_.swap(original);
}
这会奏效,但更简单的方法是
vector<int> new_(original);
解决方法
我正在尝试有效地制作矢量的副本。我看到两种可能的方法:
std::vector<int> copyVecFast1(const std::vector<int>& original)
{
std::vector<int> newVec;
newVec.reserve(original.size());
std::copy(original.begin(),original.end(),std::back_inserter(newVec));
return newVec;
}
std::vector<int> copyVecFast2(std::vector<int>& original)
{
std::vector<int> newVec;
newVec.swap(original);
return newVec;
}
其中哪一个是首选,为什么?我正在寻找最有效的解决方案,以避免不必要的复制。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。