(以前簡稱)STL Priority Queue on custom class創建性病的std ::優先級隊列::對定製
這聽起來過於複雜,但我想創建一個std ::對定製類和二維數組enum availability
類型。 這裏是隊列的聲明:
std::priority_queue < std::pair<Panel_string, availability**>*, std::vector<std::pair<Panel_string, availability**>*>, compareString > queue_string;
和這裏是隊列中的比較功能(每對將根據其權重來排序):
struct compareString {
bool operator() (const std::pair<Panel_string, availability**>* left, const std::pair<Panel_string, availability**>* right) const {
return left->first->weight > right->first->weight;
}
};
我稱爲上方連結爲此的語法。
但是,我無法編譯它,因爲在compareString結構中只檢測到兩個錯誤。在Visual Studio中,兩條紅線顯示在「左」和「右」(struct compareString
的第3行),兩者都提示:
IntelliSense: expression must have pointer type
。
如果你是我要找的,請幫我)專家:
這不是對一個隊列。這是一個指針隊列。但爲什麼所有的指針呢? – juanchopanza
雙指針('availability **')可以像二維數組一樣使用,但語義上有些不同,因爲不能保證所有行/列的長度都相同(它可能是「鋸齒狀數組」 )。動態二維數組可能更好地用單個指針('availability *')完成,在這裏計算索引(類似於'i * rows + j')。 – celticminstrel