Я использую некоторые классы и несколько служебных методов, которые используют std :: vector.
Теперь мне нужно использовать каждый кадр методом pop_front - push_back для одного из этих классов (но все они связаны и работают вместе, поэтому я не могу изменить только один).
Большинство операций повторяются по всем элементам и операциям push_back, поэтому для лучшей работы я должен сделать следующее: разветвить репозиторий этих классов и утилит, создать все шаблоны и использовать deque или list.
Но это означает много переписывания кода и много тестов, которые заставят меня пропустить крайний срок.
Поэтому мне нужен совет, чтобы написать эффективный pop_front в вектор статического размера (размер не изменится).
Я нашел здесь способ:
template<typename T>
void pop_front(std::vector<T>& vec)
{
vec.front() = vec.back();
vec.pop_back();
vec.front() = vec.back(); // but should this work?
}
И еще одна идея должна быть:
template<typename T>
void pop_front(std::vector<T>& vec, already_allocated_vector vec1)
{
vec1.clear();
copy(vec.begin(), vec.end()-1, vec1.begin());
copy(vec1.begin(), vec1.end(), vec.begin());
}
Что быстрее этих двух решений? Любые другие решения?