我正在做一個任務,我們必須編寫多個可以使用矢量互相交互的副牌(例如,從主牌中移除一張牌並將其添加到另一張牌)。賦值狀態表明我們必須在卡片結構中使用一個重載「小於」運算符,通過將它與std :: lower_bound函數結合來確定卡的正確順序。到目前爲止,這是我的:C std :: lower_bound,使用重載操作符作爲二進制謂詞comp?
void CardDeck::Add(const Card& card)
{
m_Cards.insert(std::lower_bound(m_Cards.begin(),m_Cards.end(),card,*insert smaller than operator here*),card);
}
而卡結構的重載「小於」運算符如下。它根據枚舉中的預定順序比較排名和牌的套數:
friend bool operator< (const Card& lhs, const Card& rhs)
{
if(lhs.m_Suit < rhs.m_Suit || (lhs.m_Suit == rhs.m_Suit && lhs.m_Rank < rhs.m_Rank))
{
return true;
}
}
任何幫助,非常感謝。賦值狀態我們必須使用重載操作符。我們不允許製作一個簡單的「IsSmallerThan()」方法。
非常感謝。
編輯:忘記標記問題。評論中的額外信息。
你的問題是什麼? (除了多餘的逗號) –
那麼這有什麼問題?這是一個錯誤嗎?編譯器錯誤? – bstamour
另外,請注意,當條件爲false時,您不會返回運算符
bstamour