簡體   English   中英

如何在C ++中使用std :: sort?

[英]How do I use std::sort in C++?

我在<algorithm>使用std :: sort函數。 我遵循了http://www.cplusplus.com/reference/algorithm/sort/上給出的示例。 我想使用如下所示的示例:

// using default comparison (operator <):
   std::sort (myvector.begin(), myvector.begin()+4); 

應用於我的課程,它看起來像這樣:

std::sort(newTuples->begin(), newTuples->end());

其中newTuples是類型

std::vector<Tuple>*

所以我覆蓋了Tuple類的operator<函數:

bool const Tuple::operator<(Tuple * tup1){
    bool result = false;

    for(int iii=0; iii<tup1->size(); iii++){
        if(tup1->at(iii)->getTokensValue() < this->at(iii)->getTokensValue()){
            result = true;
            break;
        }
        else if (tup1->at(iii)->getTokensValue() > this->at(iii)->getTokensValue())
            break;
    }

    return result;


}

問題是,當我嘗試在XCode中進行構建時,它給了我顯示的錯誤:

Xcode錯誤

<algorithm>哪個代碼段。

它給了我各種堆棧跟蹤信息,其中一行給了我以下內容:

xcode錯誤2

Tuple.h文件中包含哪個代碼段。

我不知道該怎么辦! 非常感謝您的幫助,因為我的CS類項目現在延遲了3天,因為我無法弄清這種LAST排序算法。 我已經實現了帶有關系的關系數據庫管理系統,並且關系操作選擇,設計和重命名。 我已正確設置了這些元組的格式,只需按排序順序即可。 謝謝!

編輯:

所以我按照答案中的建議更改了聲明,但是現在它給了我:

另一個錯誤

有什么幫助嗎?

這將TupleTuple*進行比較Tuple*

bool const Tuple::operator<(Tuple * tup1)

您應該將其更改為:

bool Tuple::operator<( const Tuple &tup1 ) const

您需要一個將const Tuple*const Tuple*進行比較的運算符。 在Tuple類內部聲明:

friend bool operator<(const Tuple*, const Tuple*);

並將其實現為常規功能


編輯

如果您的向量是std::vector<Tuple>那么您應該實現:

bool Tuple::operator<(const Tuple&) const;

而不是您的指針版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM