如何在C ++中从(该容器类的)const_iterator
获取(某个容器类的)[C0? iterator
中的const_iterator
呢?结果insert_iterator
应该指向与原始点相同的位置。
容器必须提供iterator
作为可转换为iterator
的类型,因此您可以隐式转换:
const_iterator
Container::iterator it = /* blah */;
Container::const_iterator cit = it;
s是输出迭代器。这无法将它们转换为必须为正向迭代器的常规std::insert_iterator
。
另一种插入迭代器may允许这样的事情,但是从标准函数获得的不允许。
我想您可以在Container::iterator
周围编写自己的包装程序,从而暴露受保护的成员std::insert_iterator
:
iter
您可以转换它们。示例:
template <typename Container>
class exposing_insert_iterator : public std::insert_iterator<Container> {
public:
exposing_insert_iterator(std::insert_iterator<Container> it)
: std::insert_iterator<Container>(it) {}
typename Container::iterator get_iterator() const {
return std::insert_iterator<Container>::iter;
}
};
// ...
std::insert_iterator<Container> ins_it;
exposing_insert_iterator<Container> exp_it = ins_it;
Container::iterator it = exp_it.get_iterator();
但是我想这不是您要寻找的答案。给我看代码。 :-)