Есть много вопросов о выходном итераторе и наборах, но ни один из них не касается этой конкретной темы.
Я пишу функцию для десериализации последовательности объектов в контейнере. Мне бы хотелось, чтобы эта функция была как можно более общей, чтобы контейнер мог быть либо множеством, либо вектором.
Я подумываю получить 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
Большое спасибо.