我正在以一種類似STD的方式編寫SkipList實現:使用分配器,迭代器等。整個類已完成並正在工作,但現在我試圖爲我所做的課程寫一個頭文件。我現在的頭文件的內容是:使用std :: pair的頭文件中的typedef錯誤類
template<class _MySkiplist>
class _Skiplist_const_iterator;
template<class _MySkiplist>
class _Skiplist_iterator;
template<class _Kty,
class _Pr,
class _Alloc>
class skiplist
{
typedef skiplist<_Kty, _Pr, _Alloc> _Myt;
typedef typename _Skiplist_const_iterator<_Myt> const_iterator;
typedef typename _Skiplist_iterator<_Myt> iterator;
typedef typename _Alloc::size_type size_type;
typedef std::pair<iterator, iterator> _Pairii;
typedef std::pair<iterator, bool> _Pairib;
skiplist();
skiplist(const _Alloc& _Al);
skiplist(const _Pr& _Pred);
skiplist(const _Pr& _Pred, const _Alloc& _Al);
~skiplist();
iterator begin();
const_iterator begin() const;
iterator end();
const_iterator end() const;
size_type size() const;
size_type max_size() const;
bool empty() const;
// _Pairib insert(_Kty& _val);
// _Pairib insert(const _Kty& _val);
size_type erase(const _Kty& x);
void clear();
_Pr key_comp() const;
_Pr value_comp() const;
iterator find(const _Kty& x);
size_type count(const _Kty& x) const;
iterator lower_bound(const _Kty& x) const;
iterator upper_bound(const _Kty& x) const;
// _Pairii equal_range(const _Kty& x) const;
_Alloc get_allocator() const;
};
我讓越來越以下錯誤:
錯誤1個錯誤C2143:語法錯誤:缺少 ';' '<'
錯誤3錯誤C2238:在';'之前的意外標記(s)
錯誤5錯誤C2238:在';'之前的意外標記(s)
錯誤2錯誤C4430:缺少類型說明符 - 假定爲int。注意:C++ 不支持默認int
所有這些錯誤是指按照頭文件中的兩行:
typedef std::pair<iterator, iterator> _Pairii;
typedef std::pair<iterator, bool> _Pairib;
我跑出來的想法,爲什麼會出現錯誤。
您的標識符在C++代碼中是非法的:下劃線後跟大寫字母被保留。 –
也許編譯器被迭代器typedef中的'typename'弄糊塗了? –
將所有內容更改爲下劃線+小寫字母並且沒有變化 – MarcinJuraszek