當我嘗試使用std::distance
一個自定義的迭代器下GCC 4.7,它抱怨沒有找到difference_type
。我很遺憾不知道爲什麼它失敗了。difference_type沒有找到
#include <iterator>
class nit {
public:
typedef int difference_type;
};
int main() {
const nit test1;
std::distance(test1, test1);
return 0;
}
給出了錯誤:
/usr/include/c++/4.7/bits/stl_iterator_base_funcs.h:114:5: error: no type named ‘difference_type’ in ‘struct std::iterator_traits<nit>’
這裏可能是解決方案:http://www.cplusplus.com/forum/general/11428/。 –
嘗試從實例繼承類['標準:: iterator'(http://en.cppreference.com/w/cpp/iterator/iterator)。我可以想象,'std :: iterator_traits'只專門用於那些繼承它的東西。 –
進一步說,我可以用'類尼特進一步得到:公衆的std ::迭代器<性病:: random_access_iterator_tag,T,int>的''但需要T'是一個非void類型,您需要提供'operator-'這個工作。或者,你可以有一個'bidirectional_iterator_tag',但你需要提供增量器和比較器。 –