没有匹配函数来调用 'merge(std::vector<int>&, std::vector<int>&am
No matching function for call to 'merge(std::vector<int>&, std::vector<int>&)
#include <iostream>
#include <algorithm>
#include <vector>
std::vector <int> mergesort(std::vector <int> list)
{
int n = list.size();
if(n == 1)
{
return list;
}
std::vector<int> v2(list.begin(), list.begin() + list.size()/2),
v3(list.begin() + list.size()/2, list.end());
v2 = mergesort(v2);
v3 = mergesort(v3);
return merge(v2, v3);
}
std::vector <int> merge(std::vector <int> list1, std::vector <int> list2)
{
std::vector <int> list3;
while(list1.size() > 0 && list2.size() > 0)
{
if(list1[0] > list2[0])
{
list3.push_back (list2[0]);
list2.erase (list2.begin());
}
else
{
list3.push_back (list1[0]);
list1.erase (list1.begin());
}
}
while(list1.size() > 0)
{
list3.push_back (list1[0]);
list1.erase (list1.begin());
}
while(list2.size() > 0)
{
list3.push_back (list2[0]);
list2.erase (list2.begin());
}
return list3;
}
int main()
{
}
我在第 16 行收到错误,错误是:
No matching function for call to 'merge(std::vector<int>&, std::vector<int>&)
我在退货merge(v2,v3);
做错了吗?
是通过判断错误来带有指针的东西吗?
我尝试声明为指针向量,看看这是否有效,但它没有。
C++和
C一样,从上到下读取。 在mergesort
中它调用merge
的点,该函数不存在。 要么反转实现,要么声明merge
以上mergesort
。
在引用之前,您必须声明合并函数:
extern std::vector <int> merge(std::vector <int> list1, std::vector <int> list2);
return merge(v2, v3);
在C++中,您必须在调用函数之前声明它们。
要么将merge
的整个定义移到顶部(将其放在mergesort
之前(,要么在顶部预先声明merge
:
std::vector <int> merge(std::vector <int> list1, std::vector <int> list2);
相关文章:
- 尝试使用 std::vector<std::thread时出现静态断言失败错误>
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 连接和压缩标准::vector<std::字符串的最佳方法>
- C++从 std::vector<std::function<中删除 std::function>>
- 如何在构造函数初始值设定项列表中使用 n 个元素初始化 std::vector<std::time_t>
- 如何使用 CUDA 将 std::vector<std::string> 复制到 GPU 设备
- 编译错误 std::vector<std::shared_ptr<T>>迭代器和擦除方法
- 将 std::vector<std::unique_ptr<T>> 移动到 std::vector<std::shared_ptr<T>>
- 如何从 boost::container::vector<std::string>::iterator 访问索引和对象?
- 使用 std::vector<std::future<int>> 和 std::async 启动几个线程时中止
- 为什么转置这个 std::vector<std::vector<std::string> > 这么慢?
- 是否有可能在没有复制的情况下传递 std::vector<int> 作为参数来获得 std::vector<std::array<int, 3>>?
- 在 boost::<double>asio::buffer 中使用像 std::vector<std::complex> 这样的参数
- 如何从 std::initializer_list<char const* 构建 std::vector<std::string>>
- 如何检查 std::vector<std::string> 的元素是否以某个子字符串开头?
- 在 std::vector<std::vector 中重新存储内部向量<TYPE>>
- 将 std::vector<std::string> 转换为 const char* const*
- 不能将结构push_back() 转换为 std::vector<std::shared_ptr<theStruct>> theVector
- SWIG:传递一个 std::vector< std::vector <double> >指向 python 的指针
- 将 std::vector<std::p air<const K, V>*> 转换为 std::vector<std::p air<const K, V>&g