集合上的输出迭代器:分配和递增迭代器

Output iterator on a set: assign and increment iterator

有很多关于输出迭代器和集合的问题,但是 none 解决了这个特定主题。

我正在编写一个函数来将一系列对象反序列化到容器中。我希望这个函数尽可能通用,所以容器可以是集合或向量。

我正在考虑接收一个 OutputIterator 作为参数,在反序列化时将每个新对象放在哪里。如果容器是一个集合,我不确定在写入迭代器时会发生什么。

简而言之,假设此示例中的容器持有 int 而不是指向对象的指针,由 getIntFromInput().

一一返回
void deserializeToContainer(OutputIterator oit){
  while(moreInputAvailable()){
    *oit = getIntFromInput();
    oit++;
  }
}

void deserializeToVector(vector<int> &vectorContainer){
  deserializeToContainer(vectorContainer.back_inserter());
}

void deserializeToSet(set<int> &setContainer){
  deserializeToContainer(setContainer.end());
}

由于 set 没有 back_inserter,并且元素没有按插入顺序存储,我想知道 *oit 赋值和 oit 递增会发生什么容器是一个集合,如 deserializeToSet

非常感谢。

您可以使用 std::insert_iterator (probably with std::inserter)

void deserializeToSet(set<int> &setContainer){
  deserializeToContainer(std::inserter(setContainer, setContainer.end()));
}