(STL)我怎么觉得Iterator_traits有点多余呢?求大神解释

既然在iterator里面已经有定义了value-type,和difference-type了为什么还要封装一层Iterator-traits,然后再用Iterator-traits中的value-type、difference-type,麻烦大神举例说明

http://blog.csdn.net/buxiao1983/article/details/44043955

http://blog.csdn.net/a29562268/article/details/54604572
拿这个map说明下,适配的时候要用到key和val的类型进行绑定,traits的作用就是获得其类型,linux下和windows稍微有些不同,代码中做了注释,可以参考下