我在将 char 数组按值传递给priority_queue
. 我想将唯一值传递给构造函数,但我只能将优先级队列中的类型分配给char*
. 这会导致一个问题,因为传递的值在算法中的每次迭代中都会发生变化,然后是优先级队列中的所有值(因为每个元素都是指向任务的指针)。这是一个代码示例:
char task[100];
char priority;
pair<int, char*> temp;
priority_queue< int, vector<pair<int, char*>>, compare> queue;
printf("Define a priority and a task to be done (exit by pressing CTRL-D):\n\n");
do {
priority=getchar();
if(isdigit(priority)){
scanf("%s", task);
temp=make_pair(atoi(&priority), task); //I want to pass by value here not by reference, is there any solution to this?
queue.push(temp);
printf("%i %s\n", temp.first, temp.second);
}
} while(priority != EOF);
有什么方法可以为优先级队列的每个元素分配一个唯一的字符串?