如何打印具有元素集的多重图

How to print a multimap that has the elements sets

我正在使用以下结构的多图:

typedef std::pair <set <int> , char> trigger;
std::multimap <trigger , set <int> > transitions;

模拟确定性有限自动机的转换函数,以便从一组状态通过读取符号进入另一组状态。 我如何打印这个多图? 我这样试过:

for (std::multimap<trigger,set<int> >::iterator it=transitions.begin(); it!=transitions.end(); ++it)
    {
    for (std::set<int>::iterator its=it.first.first.begin(); its!=it.first.first.end(); ++its)
    std::cout << *its<<" ";
    std::cout<<(*it).first.second<<endl;
    for (std::set<int>::iterator its=it.second.begin(); its!=it.second.end(); ++its)
    std::cout << *its<<" ";
    }

但是它说multimap没有名为first或second的成员。 提前致谢。

its=it.first.first.begin();

注意你有一个

std::multimap <trigger , set <int> >

问题是 it.first 指向一个 集合,它没有 "first" 也没有第一个概念。

这些行的问题

for (std::set<int>::iterator its=it.first.first.begin(); its!=it.first.first.end(); ++its)

for (std::set<int>::iterator its=it.second.begin(); its!=it.second.end(); ++its)

就是它是一个迭代器。使用 -> 访问它的值。

for (std::set<int>::iterator its=it->first.first.begin(); its!=it->first.first.end(); ++its)

for (std::set<int>::iterator its=it->second.begin(); its!=it->second.end(); ++its)