我想要数组"函数";按优先级
E.g SetNumber1是第一个SetNumber2是第二个ReadNumbers是最后一个
////////////////
priority_queue < ??? > Q
Q.push(ReadNumbers());
Q.push(SetNumber2());
Q.push(SetNumber1());
我想执行以便SetNumber1((、SetNumber2((、ReadNumbers((
谢谢。
很抱歉我的英语技巧,我是韩国人,我不擅长英语
std::priority_queue使用的是一个比较函数,该函数不能与给定的函数一起使用。您需要将自己的优先级定义为枚举,然后可以将prio和函数对放在std::multimap中,这样所有函数都可以根据它们的prio进行调用。你也可以把这对放在prio-q中,但你仍然需要一个只对prio有效的比较函数。
例如:
#include <iostream>
#include <map>
#include <functional>
enum class prio { HI, MID, LO };
int main()
{
std::multimap<prio, std::function<void()>> prio_mmap;
prio_mmap.insert(std::make_pair(prio::MID, []{ std::cout << "MID1n"; }));
prio_mmap.insert(std::make_pair(prio::LO, []{ std::cout << "LOn"; }));
prio_mmap.insert(std::make_pair(prio::HI, []{ std::cout << "HIn"; }));
prio_mmap.insert(std::make_pair(prio::MID, []{ std::cout << "MID2n"; }));
for (const auto& p: prio_mmap)
{
p.second();
}
}