Мне нужно обновить вектор указателей в C уникальным способом

#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;
}
  

Отвечает ли это на вопрос?