我有問題將char數組按值傳遞給priority_queue
。我想將一個唯一的值傳遞給構造函數,但我只能將優先級隊列中的類型分配給char*
。這會產生問題,因爲傳遞的值會隨着算法中的每次迭代而改變,然後優先級隊列中的所有值(因爲每個元素都是指向任務的指針)。這裏是一個代碼示例:通過值傳遞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);
有沒有什麼辦法可以爲優先級隊列的每個元素分配一個唯一的字符串?
C++解決方案:按價值傳遞字符串或矢量。 C解決方案:struct foo {char task [100]; };'並通過值傳遞該結構。 –
2013-08-05 13:31:50
只需使用'make_pair(...,std :: string(task))'並相應地更改相關類型。 – Jon
好的。我明白了,這是解決問題的辦法。在這種情況下,僅使用char []不是一個選項? – user1319951