0

多图包含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;
    }
}

但是该方法什么也没做。有人可以帮我吗?

4

1 回答 1

0

此功能不打印任何内容。它返回Questions*从具有给定级别的所有问题中随机选择的一个。因此,如果有 3 个级别为 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.

于 2012-12-18T21:25:11.280 回答