C – 从Set打印对象

前端之家收集整理的这篇文章主要介绍了C – 从Set打印对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有一个C set和迭代器:
set<Person> personList;
set<Person>::const_iterator location;

如何打印出套装内容?它们都是人物对象,我重载了运算符<<为人. 错误在基本for循环中的行:

cout << location

Netbeans给出:

proj.cpp:78: error: no match for ‘operator<<’ in ‘std::cout << location’

看起来它想要迭代器的运算符<<的重载. 基本上,我正在使用以数组格式存储的对象,但现在是一组.什么是相同的cout<<数组[i]用于集合?

解决方法

在C 11中,为什么在使用foreach循环时使用for循环?
#include <iostream> //for std::cout

void foo()
{
    for (Person const& person : personList)
    {
        std::cout << person << ' ';
    }
}

在C 98/03中,为什么在使用算法时使用for循环呢?

#include <iterator> //for std::ostream_iterator
#include <algorithm> //for std::copy
#include <iostream> //for std::cout

void foo()
{
    std::copy(
        personList.begin(),personList.end(),std::ostream_iterator(std::cout," ")
        );
}

请注意,这适用于任何迭代器对,而不仅仅是来自std :: set< t>的迭代器. std :: copy将使用您的用户定义的运算符<<使用此单个语句打印出集合中的每个项目.

原文链接:https://www.f2er.com/c/117749.html

猜你在找的C&C++相关文章