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

时间:2015-03-29 12:50:39

标签: c++ stl set multimap

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

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<<" ";
    }

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

2 个答案:

答案 0 :(得分:0)

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

注意你有

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

问题是it.first指向,它没有&#34;第一个&#34;也不是第一个概念。

答案 1 :(得分:0)

这些行的问题

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)

是它是一个迭代器。使用 - &gt;获取它的价值。

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)