多图包含multimap<int,Questions*> map;
。我试图使用以下方法打印出地图:
Questions* Questions::printQuestion(int level)
{
multimap<int, Questions*>::iterator it;
pair<multimap<int, Questions*>::iterator,multimap<int, Questions*>::iterator> ret;
ret = map.equal_range(level);
if(ret.first != ret.second)
{
size_t sz = distance(ret.first, ret.second);
size_t idx = rand() % sz;
advance(ret.first, idx);
it =ret.first;
return (*it).second;
}
else
{
return NULL;
}
}
但该方法什么也没做。有人可以帮我吗?
答案 0 :(得分:0)
此功能不打印任何内容。它返回一个Questions*
,它是从给定级别的所有问题中随机选择的。因此,如果级别5有三个问题,并且您调用printQuestion(5)
,则会得到指向这三个问题的随机问题的指针。如果要打印在此功能中选择的问题,则必须执行以下操作:
Questions* question = (*it).second;
std::cout << question->getText() << std::endl;
将getText()
替换为打印问题所需的一切。
如果您希望调用该函数的客户端打印问题,您将执行以下操作:
Questions* question = printQuestion(5);
std::cout << question->getText() << std::endl;
顺便说一句,用复数形式命名类并不常见。如果您的课程被称为Question
而不是Questions
,那么阅读您的代码会更容易。