gpt4 book ai didi

C++ 错误 - 没有匹配的调用函数

转载 作者:太空宇宙 更新时间:2023-11-04 15:56:01 27 4
gpt4 key购买 nike

由于错误,我在尝试编译代码时遇到了一些问题。

它在函数 mergeSort 中,行:merge(a, from, mid, to); :

Invalid arguments ' Candidates are: 2 merge(#0, #0, #1, #1, #2, #3) 2 merge(#0, #0, #1, #1, #2) ' no matching function for call to merge(std::vector >&, int&, int&, int&)

    void mergeSort(vector<string> &a, int from, int to)
{
if (from == to)
{
return;
}
int mid = (from + to) / 2;

mergeSort(a, from, mid);
mergeSort(a, mid + 1, to);
merge(a, from, mid, to);

} // end mergeSort

void merge(vector<string> &a, int from, int mid, int to)
{
int n = to - from + 1;
vector<string> b(n);
int i1 = from;
int i2 = mid + 1;
int j = 0;

while (i1 <= mid && i2 <= to)
{
if (a[i1].compare(a[i2]) < 0)
{
b[j] = a[i1];
i1++;
}
else
{
b[j] = a[i2];
i2++;
}
j++;
}

while (i1 <= mid)
{
b[j] = a[i1];
i1++;
j++;
}

while (i2 <= to)
{
b[j] = a[i2];
i2++;
j++;
}

for (j = 0; j < n; j++)
{
a[from + j] = b[j];
}
}

int main() {
vector<string> v = {"Apple", "Fruit", "Banana", "apple", "4apples", "applesauce", "3bananas", "\"apple\""}

// Print original vector
cout << "******Original*******"<< endl;
for (vector<string>::size_type i = 0; i < v.size(); ++i)
{

cout << v[i] << endl;
}

mergeSort(v, 0, v.size() - 1);

cout << "******MERGE SORTED*******"<< endl;
for (vector<string>::size_type i = 0; i < v.size(); ++i)
{

cout << v[i] << endl;
}

}

最佳答案

标准 C++ 库有自己的 std::merge()功能。这些是您在编译器错误中看到的不匹配的候选者。看起来编译器甚至没有考虑您的 merge() 函数。这意味着您在尝试使用函数之前没有声明它,并且您的代码中有一个 using namespace std 语句。

您需要声明您的函数。你需要摆脱 using 语句或者在它自己的命名空间中声明你的函数,然后让 mergeSort() 明确说明要拉取哪个命名空间 merge() 来自.

关于C++ 错误 - 没有匹配的调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57837995/

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