У него была бы маленькая проблема, делающая простой шаблон.Вектор обычно использует push_back, в то время как hash_set будет использовать вставку.
Используйте шаблон, но используйте функцию вставки и вставьте элемент .end (), чтобы вектор поддерживал быстрые операции - ваша лучшая ставка.Вы все еще немного замедляете свой хэш-набор, хотя, если он принимает позицию вставки в качестве подсказки местоположения (хотя это будет работать).
Используя insert (iter, val), contianer расширяетсявставляя новые элементы перед элементом в позиции итератора.Это верно для контейнеров последовательности (вектор), в то время как ассоциативные контейнеры (hash_set) будут просто использовать позицию в качестве подсказки - но вставка все равно будет работать нормально.Приведенную ниже функцию можно использовать для вставки значения U в любой контейнер, поддерживающий вставку (все это делают в STL), если предположить, что U совпадает или неявно преобразуется в тип векторного элемента.
template <typename T, typename U>
void InsertToContainer(T& container, U val)
{
container.insert(container.end(), val);
}