C++使用cout打印vector<int>报candidate function not viable错误如何解决
错误原因
C++标准库未对std::vector容器重载<<输出运算符,无法直接将整个vector对象传入std::cout做输出操作。编译器在匹配operator<<的实现时,找不到能接收vector<int>类型参数的重载,才会抛出类型不匹配的报错。
修复方案
- 方案1:遍历容器逐个输出元素
你可以通过下标遍历或者范围for循环,取出vector中的每个元素单独输出,示例代码如下:
#include <iostream> #include <vector> using namespace std; int main() { vector<int> vec(5); // 可自行给vec元素赋值做测试,比如vec = {1,2,3,4,5}; // 范围for循环写法更简洁 for (const auto& val : vec) { cout << val << " "; } cout << endl; return 0; }
- 方案2:自定义
<<运算符重载实现整体输出
如果需要多次输出vector,可自行重载适配vector<int>的输出运算符,之后就可以直接用cout << vec的写法输出整个容器,示例代码如下:
#include <iostream> #include <vector> using namespace std; // 自定义<<运算符重载 ostream& operator<<(ostream& os, const vector<int>& vec) { os << "["; for (size_t i = 0; i < vec.size(); i++) { if (i != 0) os << ", "; os << vec[i]; } os << "]"; return os; } int main() { vector<int> vec(5); cout << vec << endl; return 0; }
内容的提问来源于stack exchange,提问作者Kiki
相关产品推荐
相关产品推荐

