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;