我正在使用以下结构的多图:
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的成员。 提前谢谢。
答案 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)