错误:没有匹配函数调用‘std::vector<std::__cxx11::basic_string<char> >::push_back(int&)’
Posted
技术标签:
【中文标题】错误:没有匹配函数调用‘std::vector<std::__cxx11::basic_string<char> >::push_back(int&)’【英文标题】:error: no matching function for call to ‘std::vector<std::__cxx11::basic_string<char> >::push_back(int&)’ 【发布时间】:2018-12-05 21:13:28 【问题描述】:我是 C++ 新手。当我运行我的代码时出现此错误:(
Big Sorting.cpp:在函数“int main(int, const char**)”中: Big Sorting.cpp:13:22:错误:没有匹配函数调用‘std::vector >::push_back(int&)’ v.push_back(m); ^ 在 /usr/include/c++/8.1.1/vector:64 包含的文件中, 来自 Big Sorting.cpp:2: /usr/include/c++/8.1.1/bits/stl_vector.h:1074:7: 注意:候选:'void std::vector<_tp _alloc>::push_back(const value_type&) [with _Tp = std::__cxx11::basic_string; _Alloc = std::allocator >;标准::向量<_tp _alloc>::value_type = std::__cxx11::basic_string]’ push_back(const value_type& __x) ^~~~~~~~~ /usr/include/c++/8.1.1/bits/stl_vector.h:1074:7:注意:没有已知的参数 1 从“int”到“const value_type&”的转换aka 'const std::__cxx11::basic_string&' /usr/include/c++/8.1.1/bits/stl_vector.h:1090:7: 注意:候选:'void std::vector<_tp _alloc>::push_back(std::vector<_tp _alloc>::value_type&&) [with _Tp = std::__cxx11::basic_string; _Alloc = std::allocator >; std::vector<_tp _alloc>::value_type = std::__cxx11::basic_string]’ push_back(value_type&& __x) ^~~~~~~~~ /usr/include/c++/8.1.1/bits/stl_vector.h:1090:7:注意:没有已知的参数 1 从“int”到 'std::vector >::value_type&&' aka 'std::__cxx11::basic_string&&'
这是我的代码
#include <iostream>
#include <vector>
#include <algorithm>
int main(int argc, char const *argv[])
std::vector<std::string> v;
int n, m;
std::cin >> n;
for (size_t i = 0; i < n; i++)
std::cin >> m;
v.push_back(m);
sort(v.begin(), v.end());
for(int i = 0; i < v.size(); i++)
std::cout << v[i] << '\n';
return 0;
【问题讨论】:
m
是一个整数。您不能将 int 放入字符串向量中。
赞成,因为您包含了整个错误消息。
顺便说一句,包括<string>
啊,模板错误消息的麻烦...
特别糟糕,因为错误比您的代码大得多......
【参考方案1】:
您正在阅读 int
变量 m
并尝试将其放入字符串向量中。你应该改用std::vector<int>
。
底线:您的代码只需要一项更改,最合理的一项是将std::vector<std::string>
更改为std::vector<int>
。
【讨论】:
或者在推送之前将int
转换为std::string
或者将m
声明为std::string
,这可能是作者的本意。
我尝试将字符串转换为 int,然后出现此错误“在抛出 'std::out_of_range' 的实例后调用终止 what(): stoi Aborted (core dumped)”
@JeJo 我根据您的建议编辑了我的代码,但这里仍然出错 看看我的代码 #include <iostream> #include <vector> #include <algorithm> #include <string> int main(int argc, char const *argv[]) std::vector<:string> v;标准::字符串米;诠释n;大小_t s;标准::cin >> n; for (size_t i = 0; i > m; v.push_back(std::stoi(m, &s)); 排序(v.begin(),v.end()); for(int i = 0; i </:string></string></algorithm></vector></iostream>
@Riajulkashem 您只需将int m
更改为string m
。只有这样你才能做到push_back(m)
以上是关于错误:没有匹配函数调用‘std::vector<std::__cxx11::basic_string<char> >::push_back(int&)’的主要内容,如果未能解决你的问题,请参考以下文章
错误:没有匹配函数调用‘std::vector<std::__cxx11::basic_string<char> >::push_back(int&)’