我想通過鏈表實現通用映射。 我一直試圖重載++運算符來移動一個迭代器通過一個列表,但我有問題,使用新的運算符。如何使用迭代器重載增量運算符
template <class KeyType, class ValueType, class CompareFunction = std::less<KeyType> >
class MtmMap {
public:
class Node{
public:
const Pair* data;
Node* next;
Node()
: data(NULL),next(NULL){}
Node(const Pair pair){
data=new Pair(pair);
data=&pair;
next=NULL;
}
};
Node* iterator;
// ...
};
這裏是超載:
Node* operator++(){
iterator=iterator->next;
return iterator;
}
我想用++運算符在mtmMap另一種方法:
void insert(const Pair pair){
for(begin();iterator->next->data;this++){
}
,但我得到這些錯誤:
「作爲增量操作數需要左值」
「只讀位置增量」
請修復壓痕並平衡大括號。另外,請說明你正在嘗試做什麼。在C++中,「迭代器」指的是一種數據類型,但您顯然在容器類中創建了一個名爲'iterator'的成員變量。 – Potatoswatter
在STL團隊建立更好的方法之前,將迭代狀態「融入」迭代的集合中的這種事情是相當普遍的STL之前(即早期雜湊)。看看標準庫的靈感。 – molbdnilo
另外''data = &pair;''會給你一個無效指針,因爲'pair'是一個函數參數。而且這也是內存泄漏。 – molbdnilo