C++ 使用映射c+计算重复项+;

C++ 使用映射c+计算重复项+;,c++,vector,duplicates,C++,Vector,Duplicates,我试着用map和vector of struct来计算重复项 我在这一部分一直有错误: void display(const std::map<ChildInfo, unsigned int>& counts) { for (auto count = counts.begin(); count != counts.end(); ++count) { std::cout << "Value " << count->first

我试着用map和vector of struct来计算重复项

我在这一部分一直有错误:

void display(const std::map<ChildInfo, unsigned int>& counts) {
    for (auto count = counts.begin(); count != counts.end(); ++count) {
        std::cout << "Value " << count->first << " has count " << count->second << std::endl;
    }
}
void显示(const std::map&counts){
对于(自动计数=计数。开始();计数!=计数。结束();+计数){

std::cout在函数显示中定义
操作符的重载,您要显示
ChildInfo
元素(映射的
count->first
元素,但是您没有定义一个操作符
count->first
指的是什么?它是
ChildInfo
对象吗?如果是,那么您应该如何在不重载
的情况下打印呢?将它减少到a,您将看到它与重复或映射的计数完全无关@PRP为什么我需要超负荷@iksemyonov回答解释了我在评论中说的。看到了吗。
std::ostream& operator<<(std::ostream& str, const ChildInfo& ci) {
    str << "id " <<  ci.id << " gram " << ci.gram << "\n";
    return str;
}
ostream& operator << (ostream & os, const ChildInfo& lhs) 
{ 
    os << lhs.id; 
    return os; 
}