繁体   English   中英

没有匹配的函数来调用&#39;merge(std :: vector <int> &,std :: vector <int> &)

[英]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>&)

我在return merge(v2,v3);做错什么吗merge(v2,v3);

通过判断错误是否与指针有关?

我尝试过声明为指针向量,以查看是否可行,但没有成功。

您必须在引用之前声明合并功能:

extern std::vector <int> merge(std::vector <int> list1, std::vector <int> list2);
return merge(v2, v3);

C ++与C一样,从上到下读取。 mergesort中调用merge ,该功能不存在。 反转实现或在mergesort上方声明merge

在C ++中,必须在调用函数之前声明它们。

merge的整个定义移到顶部(将其放置在mergesort之前),或在顶部预声明merge

std::vector <int> merge(std::vector <int> list1, std::vector <int> list2);

没有匹配的 function 调用 'std::vector <std.. '< div><div id="text_translate"><p> 我正在解决的问题是:我必须采用<strong>T</strong>测试用例。 For each test case I have to take string as an input, then I need to arrange the input string as: <em>string at even position {double space} string at odd position</em> (example: <em>input</em> - StackOverflow, <em>output</em> - <strong>Sakvrlw</strong> <strong>tcOefo</strong> ). 我编写了以下代码,其中我为所有测试用例获取输入并将其存储在向量中。 然后我将 vector 的元素分配给另一个声明的 string s。</p><pre> #include &lt;cmath&gt; #include &lt;cstdio&gt; #include &lt;vector&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;string&gt; using namespace std; int main() { /* Enter your code here. Read input from STDIN. Print output to STDOUT */ int T,i; cout &lt;&lt; "Enter no. of test cases: "; cin &gt;&gt; T; vector&lt;string&gt; v; vector&lt;string&gt; odd; vector&lt;string&gt; even; string str; for(int i=0; i&lt;T; i++){ cin &gt;&gt; str; v.push_back(str); } string s; for(i=0; i&lt;v.size(); i++){ s = v.at(i); for(i=0; i&lt;s.size(); i++){ if(i==0){ even.push_back(s[i]); //*This is where I am getting error*. }else if(i==1){ odd.push_back(s[i]); }else{ if(i%2==0){ even.push_back(s[i]); }else{ odd.push_back(s[i]); } } } for(i=0; i&lt;even.size(); i++){ cout &lt;&lt; even.at(i); } cout &lt;&lt; " "; for(i=0; i&lt;odd.size(); i++){ cout &lt;&lt; odd.at(i); } cout &lt;&lt; endl; even.clear(); odd.clear(); s.clear(); } return 0; }</pre><p> 在编译上面的代码时,我得到"no matching error for call std::vector..." 。 <strong><em>我到底做错了什么?</em></strong></p></div></std..>

[英]no matching function for call to 'std::vector<std.. '

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 C ++错误:没有匹配的函数可以调用&#39;std :: vector <int> ::交换(标准::矢量 <int> )” 没有匹配的 function 调用 'std::vector <std::vector<int> &gt;::push_back(int)' </std::vector<int> 错误:没有匹配的 function 调用 'std::vector::erase(int)' 没有匹配的函数来调用&#39;std :: vector <int> ::使用宏时插入 C++ - 在 foreach 中复制向量给出“没有匹配的函数来调用 std::vector<int> ::push_back(std::vector)<int> &amp;)” C ++模板错误:调用std :: vector没有匹配功能 <int, std::allocator<int> &gt; 错误:没有匹配的函数调用&#39;std :: vector <std::vector<int> &gt; ::的push_back(标准::矢量 <std::__cxx11::basic_string<char> &gt;&)” boost :: transitive_closure()和“错误:没有匹配的函数来调用&#39;vertices(const std :: vector <std::vector<long unsigned int> ……” C ++简单的树遍历并将行存储在vector的行中。 错误:没有匹配的函数可以调用&#39;std :: vector <int> :: push_back(std :: vector <int> &)&#39; 没有匹配的 function 调用 'std::vector <std.. '< div><div id="text_translate"><p> 我正在解决的问题是:我必须采用<strong>T</strong>测试用例。 For each test case I have to take string as an input, then I need to arrange the input string as: <em>string at even position {double space} string at odd position</em> (example: <em>input</em> - StackOverflow, <em>output</em> - <strong>Sakvrlw</strong> <strong>tcOefo</strong> ). 我编写了以下代码,其中我为所有测试用例获取输入并将其存储在向量中。 然后我将 vector 的元素分配给另一个声明的 string s。</p><pre> #include &lt;cmath&gt; #include &lt;cstdio&gt; #include &lt;vector&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;string&gt; using namespace std; int main() { /* Enter your code here. Read input from STDIN. Print output to STDOUT */ int T,i; cout &lt;&lt; "Enter no. of test cases: "; cin &gt;&gt; T; vector&lt;string&gt; v; vector&lt;string&gt; odd; vector&lt;string&gt; even; string str; for(int i=0; i&lt;T; i++){ cin &gt;&gt; str; v.push_back(str); } string s; for(i=0; i&lt;v.size(); i++){ s = v.at(i); for(i=0; i&lt;s.size(); i++){ if(i==0){ even.push_back(s[i]); //*This is where I am getting error*. }else if(i==1){ odd.push_back(s[i]); }else{ if(i%2==0){ even.push_back(s[i]); }else{ odd.push_back(s[i]); } } } for(i=0; i&lt;even.size(); i++){ cout &lt;&lt; even.at(i); } cout &lt;&lt; " "; for(i=0; i&lt;odd.size(); i++){ cout &lt;&lt; odd.at(i); } cout &lt;&lt; endl; even.clear(); odd.clear(); s.clear(); } return 0; }</pre><p> 在编译上面的代码时,我得到"no matching error for call std::vector..." 。 <strong><em>我到底做错了什么?</em></strong></p></div></std..>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM