C++ 试图让multimap打印出问题

C++ 试图让multimap打印出问题,c++,printing,random,multimap,C++,Printing,Random,Multimap,多重映射包含多重映射。我正在尝试使用以下方法打印地图: Questions* Questions::printQuestion(int level) { multimap<int, Questions*>::iterator it; pair<multimap<int, Questions*>::iterator,multimap<int, Questions*>::iterator> ret; ret = map.equ

多重映射包含
多重映射。我正在尝试使用以下方法打印地图:

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;
    }
}
Questions*Questions::printQuestion(整数级)
{
多重映射::迭代器;
配对ret;
ret=映射相等范围(级别);
如果(返回第一个!=返回第二个)
{
尺寸_t sz=距离(返回第一次,返回第二次);
size_t idx=rand()%sz;
预付款(先退后退,idx);
它=重新开始;
返回(*it);
}
其他的
{
返回NULL;
}
}

但是这种方法没有任何作用。有人能帮我吗?

此函数不打印任何内容。它返回一个从给定级别的所有问题中随机选择的
问题*
。因此,如果第5级有三个问题,您调用
printQuestion(5)
,您将得到指向这三个问题的随机指针。如果要打印此函数中选择的问题,必须执行以下操作:

Questions* question = (*it).second;
std::cout << question->getText() << std::endl;

顺便说一下,用复数形式命名类并不常见。如果你的类被称为
Question
而不是
Questions

你是否尝试过输入打印语句来查看修改了什么以及何时停止工作?你的
map
变量定义在哪里?在Questions.h中定义了这个代码,而这个代码在Questions.cpp中。你的意思是它总是返回吗NULL,或者它不进行任何打印?@JohnMcG,它不进行任何打印。
Questions* question = printQuestion(5);
std::cout << question->getText() << std::endl;