《泛型编程与stl》中一段关于iterator_traits的话看不懂
自己在看《泛型编程与stl》时有一段始终无法理解的话,加粗那段什么意思?跪求大家指教。
当你定义新的iterator class时,你必须确定你的class支持iterator_traits。最简单的方法便是,总是在你的class中以嵌套类型定义value_type。这么一来,你就不需明白(explicitly)提到iterator_traits,而定义于程序库内的iterator_traits class仍能正确工作。如果因为某种原因,使你无法或不方便使用现有的iterator_traits,你可以针对你的class,将iterator_traits特化
加粗那段到底是什么意思?
怎么会无法使用iterator_traits?即便库没有提供iterator_traits,自己手写一个,那也要在定义的iterator_traits类内明确嵌套类型定义value_type
[解决办法]
搜 STL萃取器 .C++的对象不能提取出对象的特性.
然后STL里面用了traits编程技巧来实现这个东西.
[解决办法]
打个比方。假设一个已经存在的类T,类似指针的功能。由于这个T不是标准的iterator,如果你想把这个类当作iterator用于某些算法的时,就需要为这个类定义iterator_traits。
算法可以通过这个自定义的iterator_traits,获取相关的信息,例如*T是什么类型,T-T是什么类型,等等