C++中如何从函数返回vector并使用cout输出其值?
问题原因
直接使用cout << newvector()报错,是因为C++标准库没有为std::vector提供默认的流输出运算符重载,编译器无法识别如何将vector对象直接输出到控制台。
解决方法
方法一:遍历vector元素逐个输出
先接收函数返回的vector,再通过循环遍历每个元素并打印:
#include <iostream> #include <vector> using namespace std; vector<int> newvector() { vector<int> v; v.push_back(5); return v; } int main() { // 接收函数返回的vector vector<int> vec = newvector(); // 用范围for循环遍历输出(C++11及以上支持) for (int num : vec) { cout << num << " "; } cout << endl; // 兼容旧版C++的普通for循环写法 // for (size_t i = 0; i < vec.size(); ++i) { // cout << vec[i] << " "; // } // cout << endl; }
方法二:自定义重载流输出运算符
如果需要频繁输出vector,可以自定义operator<<重载,之后就能像输出基本类型一样直接输出vector:
#include <iostream> #include <vector> using namespace std; // 重载ostream的<<运算符,处理vector<int>的输出 ostream& operator<<(ostream& os, const vector<int>& vec) { for (size_t i = 0; i < vec.size(); ++i) { os << vec[i]; // 最后一个元素后不加空格 if (i != vec.size() - 1) { os << " "; } } return os; } vector<int> newvector() { vector<int> v; v.push_back(5); return v; } int main() { // 现在可以直接输出vector了 cout << newvector() << endl; }
内容的提问来源于stack exchange,提问作者VISHNU
相关产品推荐
相关产品推荐

