集合上的输出迭代器:分配和递增迭代器
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()));
}
有很多关于输出迭代器和集合的问题,但是 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()));
}