C++里推荐的做法应该是外挂一个全局或namespace的operator!,然后通过traits仅匹配iterator。
【 在 hgoldfish 的大作中提到: 】
: 这种写法:
: for (auto itor = map.cbegin(); itor != map.cend(); ++itor) {}
: 如果是内置的类型还行,碰到有些复杂的类型,比如我给 lmdb 弄了个迭代器,它的 cbegin() 和 cend() 都特别重,你上面那样写就很浪费时空效率。所以我给迭代器整了一个 operator!(),写起来既简洁又高效:
: for (auto itor = lmdb.begin(); !!itor; ++itor) {}
: 所以为啥 c++ 标准不搞这种写法呢?
--
FROM 114.93.62.*