c++ - 如何使用迭代器打印一组集合中的内容?

标签 c++ set powerset

我正在尝试打印出我的 powerSet 的内容,这是一组给定的集合,但是当我尝试遍历我的 powerSet 时,我得到<< 二进制“<<”的 C2679 错误,具有以下功能。

template <typename T>
void writePowerSet(const set<set<T>>& pSet) 
{
    for(typename set< set<T> >::const_iterator itr = pSet.begin(); itr != pSet.end(); itr++)
    {
        cout << *itr;
    }
}

我知道为了打印一个集合,您必须遍历它并引用迭代器,但这就是产生我的错误的原因。 有没有不同的方法来处理它?<​​/p>

最佳答案

pSetstd::set<std::set<T>> 类型的引用, 所以 *itr将是 std::set<T> 类型的引用.您正在尝试使用 std::ostream过载 <<在这种类型上。然而,标准库容器没有定义这样的重载。

如果要打印内部集合的所有元素,还需要对其进行迭代:

template <typename T>
void writePowerSet(const std::set<std::set<T>>& pSet) 
{
    for(const auto& s : pSet)
    {
        for(const auto& x : s)
        {
            std::cout << x;
        }
     }
}

这里我使用基于范围的 for 循环,因为它更容易编写和阅读。输出看起来不太好,在你喜欢的地方添加额外的输出。

这也假设 <<为内部类型定义了重载 T .

关于c++ - 如何使用迭代器打印一组集合中的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53365403/

相关文章:

r - 如何计算 R 中列表的笛卡尔幂

Java : generating power set with subset length between 3 and a max

c++ - 结构 vector (copy_n 和归并排序)

web-scraping - 使用 JSoup 抓取电子邮件和链接

c++ - 静态初始化顺序失败 : same compilation unit?

python - 类集中 "__and__"和 "__rand__"有什么区别?

列表的 Python 幂集

Java:生成幂集

c++ - 如何在 std::unordered_map<std::wstring, T> 中通过 std::wstring_view 类型的键查找?

c++ - 使用 boost 库编译 C++ 代码