std::pair
基础迭代器值的s和另一个值。类定义的相关部分:
class MyIterator : public std::iterator<input_iterator, std::pair<Foo *, Bar *> > {
FooPtrIterator d_iter;
Bar d_bar;
public:
MyIterator(FooPtrIterator iter, Bar const &bar)
:
d_iter(iter),
d_bar(bar)
{ }
// Returning by value, not storing the pair itself.
value_type operator*() const {
return std::make_pair(*d_iter, &d_bar);
}
// Can't return by value!
??? operator->() const {
return ???;
}
};
现在这让我在超载时遇到麻烦
operator->
,因为我需要返回一个指针,或者其他本身支持的东西
.
标准::对
作为班级成员:
value_type d_current;
然而,这让我在构造函数中遇到了麻烦,因为那时我不知道
FooPtrIterator iter
是一个有效的迭代器,所以我不能取消引用它来提供
d_current
操作员->
boost::shared_ptr<value_type>
但这是一个可怕的黑客与更多的开销比应该需要的。
我觉得这个“生成”迭代器不应该存在。是这样,还是有别的办法?