如何打印具有元素集的多重图
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)
我正在使用以下结构的多图:
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)