STL原理解析之inserter插入迭代器的简单实现

本文介绍了一种自定义迭代器的方法,用于关联容器或无序容器的插入操作。通过继承std::iterator并重载必要的运算符,实现了可以使用标准算法进行元素插入的迭代器。
#pragma once
#include<iterator>
/*----为关联容器或者无序容器定义迭代器---*/
template<typename Container>
class MyInserterIter : public std::iterator<std::output_iterator_tag, typename Container::value_type>
{
	protected:
	Container& coll;//注意此处为一个reference
	public:
	explicit MyInserterIter(Container& c) :coll(c) {}

//	MyInserterIter& operator = (const MyInserterIter&) { return *this; }//vs实现中可能需要自己定义拷贝赋值运算符 因为其copy算法的实现调用了拷贝赋值运算符  C++标准中并没有这样的要求

	MyInserterIter& operator *()
	{
		return *this;
	}
	MyInserterIter& operator ++()
	{
		return *this;

	}
	MyInserterIter& operator ++(int)
	{
		return *this;
	}
	MyInserterIter& operator =(const typename Container::value_type& value)
	{
		coll.insert(value);
		return *this;
	}
};

template<typename coll>
inline MyInserterIter<coll> InserterIter(coll& c)
{
	return MyInserterIter<coll>(c);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值