![](/img/trans.png)
[英]Difference between vector::push_back and string::push_back?
[英]push_back in vector<string> showing error
我插入了一個字符串,我希望將每個字符分別插入向量字符串中。 在使用push_back
function 時,我收到以下錯誤:
錯誤:沒有匹配的 function 用於調用
'std::vector<std::__cxx11::basic_string<char> >::push_back(__gnu_cxx::__alloc_traits<std::allocator<char>, char>::value_type&)' 27 | color.push_back(str[i]);**
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
int t;
cin >> t;
string str;
char in;
while(t--){
cin >> str;
sort(str.begin(), str.end());
vector<string> chr;
for (int i = 0; i < str.size(); i++){
chr.push_back(str[i]);
}
for (int i = 0; i < chr.size(); i++)
cout << chr[i] << " ";
}
}
非常感謝你提前
問題是你有一個向量並且你試圖用一個字符而不是一個字符串來調用 push_back。 您不能將 x 類型的值 push_back 到您的向量,除非該類型可隱式轉換為字符串,而且不幸的是,沒有用於采用 char 的 std::string 的構造函數。
您可以通過將vector<string> 設為vector<char> 或使用字符串而不是char 調用push_back 來解決此問題。
選項 1:使 chr 成為 char 的向量而不是字符串的向量
vector<char> chr;
for(int i = 0; i < str.size(); i++){
chr.push_back(str[i]);
}
或者
vector<char> chr(str.begin(), str.end());
選項 2:使用 push_back 更改代碼以使用字符串而不是 char
vector<string> chr;
for(int i = 0; i < str.size(); i++){
chr.push_back(str.substr(i, i+i));
}
根據您正在做的事情,選項 1 可能就是您想要的。 如果你真的需要一個字符串向量,選項 2 將編譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.