![](/img/trans.png)
[英]using c++, how do I implement itetator to my own container class so i can use something like 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中進行構建時,它給了我顯示的錯誤:
<algorithm>
哪個代碼段。
它給了我各種堆棧跟蹤信息,其中一行給了我以下內容:
Tuple.h
文件中包含哪個代碼段。
我不知道該怎么辦! 非常感謝您的幫助,因為我的CS類項目現在延遲了3天,因為我無法弄清這種LAST排序算法。 我已經實現了帶有關系的關系數據庫管理系統,並且關系操作選擇,設計和重命名。 我已正確設置了這些元組的格式,只需按排序順序即可。 謝謝!
編輯:
所以我按照答案中的建議更改了聲明,但是現在它給了我:
有什么幫助嗎?
這將Tuple
與Tuple*
進行比較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.