我有从开始和结束接受容器的功能:
template <class Titerator> int foo(const Titerator& begin_data, const Titerator& end_data);
在这个函数中我想做类似的事情:
While there is reaming data{
Do something on the remaining data
delete some of the remaining data that satisfied a condition
}
当然,扩孔数据是原始数据的副本(原始数据不会改变)
我想不出办法。我需要复制数据,以便我可以做任何我想要的但是如何复制它,而我不知道什么是容器?它是矢量,列表还是什么?我只有开始和结束。 如何在不失去通用概念的情况下定义此功能?
答案 0 :(得分:3)
如果你想创建一个数据副本,你就不应该关心它最初所处的容器。这就是迭代器之美:你不必在意。
根据您想要对该副本执行的操作,为副本选择容器。
std::list
。std::vector
。像这样:
template <class Titerator>
int foo(const Titerator& begin_data, const Titerator& end_data)
{
std::list<typename std::iterator_traits<Tierator>::value_type> myCopy{begin_data, end_data};
// work on myCopy
}