gpt4 book ai didi

C++ 错误 : no matching function for call to 'std::vector::swap(std::vector)'

转载 作者:搜寻专家 更新时间:2023-10-31 00:10:02 25 4
gpt4 key购买 nike

我正在阅读一篇关于 std::vector 的博客。请参阅此 website 中的交换内容部分.


基本上,它说的是swap()的一个普通应用方法强制 vector 释放它持有的内存。但是在我运行下面的代码之后,我得到了错误 Error: no matching function for call to 'std::vector<int>::swap(std::vector<int>)'| .哪里出了问题?


#include <iostream>
#include <vector>

int main( )
{
std::vector<int> v;
v.push_back(1); v.push_back(2);
v.clear();
v.swap(std::vector<int>(v));
return 0;
}

最佳答案

std::vector::swap的参数类型是非常量左值引用(即 vector& )。但是std::vector<int>(v)是一个临时对象,不能绑定(bind)到非常量引用。

这意味着当使用“swap trick”时,你应该把临时的放在左边:

std::vector<int>(v).swap(v);

从 C++11 开始,您可以使用 std::vector::shrink_to_fit请求移除未使用的容量;请注意,这是一个非约束性请求,效果取决于实现。

关于C++ 错误 : no matching function for call to 'std::vector<int>::swap(std::vector<int>)' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40315075/

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