我們如何使用STL priority_queue
結構? 任何插圖推&彈出,其中結構有多個數據類型?
說:struct thing { int a; char b;} glass[10];
。
現在我怎麼可以把這個結構放在使用'int a'進行排序的priority_queue上?stl priority_queue的C++與struct
5
A
回答
12
這是對your original question, which you deleted的一個稍微修改的答案,沒有明顯的原因。原始文件包含了足夠的信息供您瞭解這一點,但這裏說明了這一點:提供一個比較小於int
的比較用於比較。
您所需要做的就是提供一個函數,實現與嚴格弱排序的比較,或者實現相同的類的小於等於的運算符。這個結構是否滿足要求:
struct thing
{
int a;
char b;
bool operator<(const thing& rhs) const
{
return a < rhs.a;
}
};
然後
std::priority_queue<thing> q;
thing stuff = {42, 'x'};
q.push(stuff);
q.push(thing{4242, 'y'}); // C++11 only
q.emplace(424242, 'z'); // C++11 only
thing otherStuff = q.top();
q.pop();
4
超載<
運營商爲thing
:
struct thing
{
int a;
char b;
bool operator<(const thing &o) const
{
return a < o.a;
}
};
priority_queue<thing> pq;
thing t1, t2, t3;
// ...
pq.push(t1);
pq.push(t2);
// ...
t3 = pq.top();
pq.pop();
2
相關問題
- 1. C++ STL priority_queue與結構Clearification
- 2. STL priority_queue參數
- 3. C++ STL priority_queue,比較對象的方式
- 4. STL priority_queue副本比較級
- 5. STL priority_queue <pair> vs. map
- 6. 如何使STL的priority_queue固定大小
- 7. STL中的疑問priority_queue實例
- 8. 如何在C++中實現STL priority_queue中的這種比較類
- 9. 與STL C++
- 10. C++ priority_queue與lambda比較錯誤
- 11. C++ STL的地圖,其關鍵是shared_ptr的<struct tm>
- 12. C++ priority_queue沒有推?
- 13. 使用stl map作爲struct的成員
- 14. Dijkstras算法與priority_queue
- 15. 使用STL時的內存管理建議priority_queue
- 16. 如何創建節點結構類型的Min stl priority_queue
- 17. 轉換STL映射到一個struct
- 18. C++:錯誤C2064與STL
- 19. 使用STL與Android NDK C++
- 20. C++ priority_queue大小()問題
- 21. Priority_queue仿函數使用C++
- 22. 瞭解運算符()使用min stl priority_queue重載
- 23. C++ 11的struct
- 24. const C Struct數組struct struct數組
- 25. 在struct C++中訪問struct
- 26. C++ POSIX API與C++兼容STL
- 27. subclassing priority_queue時size()函數搞亂了C++
- 28. 設置priority_queue容器的優點
- 29. 與STL
- 30. C struct裏面的結構struct
謝謝^ _^ &只是最後一件事:我將如何推(3,a)隊列direclty?我不知道如何把(3,a)放到'事物= ** ... **'。 – 2013-03-24 18:09:33
在C++ 11中,你可以說'q.push(東西{42,'x'})'或'q.emplace(42,'x')'。如果你沒有C++ 11的支持,你需要給'thing'一個構造函數。 – juanchopanza 2013-03-24 18:14:56