#c #pointers #vector #updating
#c #указатели #вектор #обновление
Вопрос:
Итак, у меня есть вектор указателей на класс, который я определил. У меня есть функция, которая принимает индекс указателя 0 и возвращает его. После этого мне нужно удалить данные из этого индекса, затем взять элемент из последнего индекса вектора и поместить его в индекс 0. На данный момент я просто присваиваю указателям значение NULL, если я их возвращаю, а затем я возвращаю конечный объект в вектор и, наконец, возвращаю его обратно. Я не уверен, что этот метод является лучшим способом решения моей проблемы. Вот мой код, хотя:
Instrument* loanOut() {
for (int i = 0, i < library.size(), i ) {
if (library[i] != NULL) {
return library[i];
}
else {
return NULL;
}
}
library[0] = NULL;
library.push_back(library[library.size()]);
}
Комментарии:
1. Этот вопрос не имеет ответа. Я могу сказать вам, что не так с кодом, но проблема слишком некорректна, чтобы предложить альтернативное решение.
Ответ №1:
Алгоритмически это то, что вы описываете :
Object PopFrontAndReplace(std::vector<Object>amp; objects) {
if (!objects.size()) {return Object();}
Object o = objects[0];
objects[0] = objects.back();
objects.pop_back();
return o;
}
Отвечает ли это на вопрос?