我想了解一個類文件,以便將我自己的書寫代碼與它合併,但是我在理解此模板函數時遇到了一些困難,而且我無法找到這是什麼輸出功能。瞭解此模板功能
template <typename Key, typename Value> struct PriorityItem {
Key key;
Value value;
PriorityItem() {}
PriorityItem(Key const& key, Value const& value) : key(key), value(value) {
}
bool operator<(PriorityItem const& pi) const {
if (key == pi.key)
return value < pi.value;
return key < pi.key;
}
};
我可以理解,這個模板得到兩個輸入並初始化它們。那麼如果我沒有認爲它正在成爲某種遞歸函數,但是pi.key
或pi.value
是什麼意思?
它真的是一個遞歸函數嗎?
爲什麼它返回一個比較表格,這是什麼輸出?
'pi'是你比較的'PriorityItem','pi.value'和'pi.key'是它的成員。 'value'和'key'等價於'this-> value'和'this-> key'。 – OMGtechy
一般來說,operator <是爲了使用像std :: set或std :: priority_queue這樣的容器而實現的。我認爲關鍵就像一個名字,這個值用來定義具有相同名字的元素的優先級。 – Caduchon
是的,它不是一個遞歸函數。它不會調用它自己,它返回值爲
Ben