C++ 为什么C++;自定义结构向量是否存在ostream重载问题?

C++ 为什么C++;自定义结构向量是否存在ostream重载问题?,c++,vector,C++,Vector,我已经写了一个代码,它必须遍历一个向量并打印它的内容。我得到一个错误: dfs.cpp:45:16:错误:与“运算符*”不匹配(操作数类型为“常量特征”) std::cout您得到的错误告诉您ostream操作符没有适用于trait类型的对象的规则。最“C++nic”的方法是重载您得到的错误告诉您ostream操作符没有适用于trait类型的对象的规则。要做到这一点,最“C++nic”的方法是在使用iostream操作符时为istream和ostream重载,或者为cout和cin或ifstre

我已经写了一个代码,它必须遍历一个向量并打印它的内容。我得到一个错误:

dfs.cpp:45:16:错误:与“运算符*”不匹配(操作数类型为“常量特征”)
std::cout您得到的错误告诉您ostream操作符没有适用于
trait
类型的对象的规则。最“C++nic”的方法是重载
您得到的错误告诉您ostream操作符没有适用于
trait
类型的对象的规则。要做到这一点,最“C++nic”的方法是在使用
iostream操作符
时为
istream
ostream
重载
,或者为
cout
cin
ifstream
ofstream
fstream
对象以编译器或编写编译器的人的方式来考虑它


这些是模板类型。用户将创建具有各种类型的模板,这些类型可以内置或自定义用户定义。要向用户提供这种能力,编译器如何知道在您的情况下将使用
列表的
ostream
是否是
列表
列表
列表
?因此,当使用
iostream操作符
时,您必须自己为您想要支持
操作符的所有类型创建重载(
操作符),无论是
cout
cin
还是
ifstream
ofstream
fstream
对象以编译器或编写编译器的人的方式来考虑它


这些是模板类型。用户将创建具有各种类型的模板,这些类型可以内置或自定义用户定义。要向用户提供这种能力,编译器如何知道在您的情况下将使用
列表的
ostream
是否是
列表
列表
列表
?因此,您必须自己为要支持
运算符>>()
运算符的所有类型创建重载。您需要重载
运算符。为什么会存在内置的
运算符?标准容器不存在内置的
运算符,你必须为自己编写一个重载。给能工作的代码并为没有显示的代码提供错误消息没有多大意义。请提供一份报告。谢谢。您需要重载
运算符为什么会存在内置的
运算符?标准容器不存在内置的
运算符,您必须自己编写一个重载。给出有效的代码并为未显示的代码提供错误消息没有多大意义。请提供一份报告。谢谢。“nic”绝对不是这里使用的后缀。被困于太过努力地模仿pythonic这个词?“nic”绝对不是这里要使用的后缀。被抓到努力模仿pythonic这个词?
#include<iostream>
#include<list>
#include<vector>
#include<stdio.h>

using namespace std;

struct traits
{
    int x;
    bool visit;
    std::list<int> friends;
};

int main()
{
    cout << "Enter the number of employees: " << endl;
    int noOfEmployees, noOfFriends;
    cin>>noOfEmployees;
    std::vector<traits> employees;
    int i = 0; int j;
    while(noOfEmployees--){
        traits v;
        v.x = i;
        cout << "Enter the no of friends: " << endl;
        cin >> noOfFriends;
        while(noOfFriends--){
            cin>>j;
            v.friends.push_back(j);
        }
        v.visit = false;
        employees.push_back(v);
    }

    std::vector<char> path;
    path.push_back('a');
    path.push_back('l');
    path.push_back('i');
    path.push_back('a');
    for (std::vector<char>::const_iterator i = path.begin(); i != path.end(); ++i){
        std::cout << *i << ' ';
    }
    for(std::vector<traits>::iterator v = employees.begin(); v != employees.end(); ++v){
        std::cout<<*v<<endl;
    }
}
std::string to_string(const traits& t) {
/// Code to generate a string representation of your traits object
}
for (const auto emp& : employees){
    std::cout<< to_string(emp) << ' ';
}