![](/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.