После того, как вы использовали значение спереди и хотите избавиться от него, вам потребуется erase
его из вектора. Я не буду говорить о front()
, возвращающем ref, поскольку 0x5453 упомянул об этом. Но нет причин использовать здесь std::move
- все, что это делает, это приводит значение к ссылке rvalue, это фактически ничего не «перемещает» само по себе.
#include <vector>
#include <iostream>
struct number {
int n{666};
};
int main()
{
std::vector<number> vec;
std::cerr << vec.size() << std::endl;
number n;
vec.push_back(n);
std::cerr << vec.size() << std::endl;
// Since this is a ref, and your struct is simple - just copy
auto b {vec.front()};
// Now remove the element
vec.erase(vec.begin());
std::cerr << "b: " << b.n << std::endl;
std::cerr << vec.size() << std::endl;
}