![](/img/trans.png)
[英]No matching function for call to 'merge(std::vector<int>&, std::vector<int>&)
[英]no matching function for call to 'std::vector<std.. '
我正在解决的问题是:我必须采用T测试用例。 For each test case I have to take string as an input, then I need to arrange the input string as: string at even position {double space} string at odd position (example: input - StackOverflow, output - Sakvrlw tcOefo ). 我编写了以下代码,其中我为所有测试用例获取输入并将其存储在向量中。 然后我将 vector 的元素分配给另一个声明的 string s。
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int T,i;
cout << "Enter no. of test cases: ";
cin >> T;
vector<string> v;
vector<string> odd;
vector<string> even;
string str;
for(int i=0; i<T; i++){
cin >> str;
v.push_back(str);
}
string s;
for(i=0; i<v.size(); i++){
s = v.at(i);
for(i=0; i<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<even.size(); i++){
cout << even.at(i);
}
cout << " ";
for(i=0; i<odd.size(); i++){
cout << odd.at(i);
}
cout << endl;
even.clear();
odd.clear();
s.clear();
}
return 0;
}
在编译上面的代码时,我得到"no matching error for call std::vector..."
。 我到底做错了什么?
编译代码时出现以下错误:
main.cpp:34:36: error: no matching function for call to 'std::vector >::push_back(char&)'
。
发生这种情况是因为even
是vector<string>
,而s[i]
是char
。 您正在尝试将 char 插入到字符串向量中,这是不可能的,因为它们是不同的类型。
如果我正确理解了您的问题,则even
和odd
都必须是vector<char>
或string
,而不是vector<string>
。
将声明更改为:
string odd;
string even;
这也允许您替换打印:
for(i=0; i<even.size(); i++) {
cout << even.at(i);
}
和:
cout << even;
欢迎来到 Stack Overflow @Manish Jha,
所以s[i]
是一个char
s
是std::string
或char
数组
该方法必须是push_back(std::string&)
而不是push_back(std::char&)
当您初始化偶数/奇数向量时,class 模板方法std::vector::push_back(T&)
是一种“专用”,因此 append 将std::string
转换为std::vector<std::string>
或char
到std::vector<char>
否则,没有调用方法std::vector<T>::push_back(T&)
希望我能正确回答您的等待,如果有任何错误,请通知我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.