У меня есть простая программа C ++, которая действует как список TODO, она содержит вектор, который содержит тип класса ITEM для отслеживания каждого TODO и их идентификатора. Ответ, который является более эффективным, при этом следуя этим невидимым ограничениям его вектора , используя элемент класса и отслеживание идентификаторов. Обратите внимание, что это не вопрос о том, почему вы устанавливаете идентификаторы в первую очередь , я хочу знать, что будет лучшим методом, следуя этим правилам.Todo todos = Todo();
todos.add("Take out the trash.");
todos.add("Do the laundry.");
todos.add("Read a book.");
todos.add("Make dinner.");
< /code>
Наш список выглядит следующим образом: < /p>
{Todo[{Item(id=0, desc="Take out the trash.")}, {Item(id=1, desc="Do the laundry.")}, {Item(id=2, desc="Read a book.")}, {Item(id=3, desc="Make dinner.")}]}
< /code>
ids: 0, 1, 2, 3 < /code> < /li>
< /ul>
Если я удалю элемент 2 < /code> < /p>
Результат: < /p>
{Todo[{Item(id=0, desc="Take out the trash.")}, {Item(id=1, desc="Do the laundry.")}, {Item(id=3, desc="Make dinner.")}]}
< /code>
ids: 0, 1, 3 < /code> < /li>
< /ul>
Теперь мы удалили элемент в ID 2 < /code>, но я хочу сохранить его в упорядоченной последовательности. 2 .
Если я вызову свою функцию fix () , она будет выполнять каждый индекс нашего Todos , проверьте, соответствует ли идентификатор элементов ожидаемому следующему идентификатору, если он не установите идентификатор элементов в текущий индекс итерации (i)
void Todo::fix() {
for (int i = 0; i < static_cast(todos.size()); i++) {
if (todos.getId() != i) {
todos.setId(i);
}
}
}
< /code>
Вот мой код: < /p>
todos.add("Take out the trash.");
todos.add("Do the laundry.");
todos.add("Read a book.");
todos.add("Make dinner.");
todos.remove(2);
todos.fix();
Если мы запустим это, наш Todos теперь будет:
{Todo[{Item(id=0, desc="Take out the trash.")}, {Item(id=1, desc="Do the laundry.")}, {Item(id=2, desc="Make dinner.")}]}
ids : 0, 1, 2
Отлично! Я получил результат, который хотел, но вот вопрос: < /p>
Это самый эффективный способ выполнить эту задачу в C ++? Кажется, что если бы это был больший список, он мог бы стать ресурсным и медленным. Есть ли какой-нибудь более быстрый/более эффективный способ сделать это?#include
#include
У меня есть простая программа C ++, которая действует как список TODO, она содержит вектор, который содержит тип класса ITEM для отслеживания каждого TODO и их идентификатора. Ответ, который является более эффективным, при этом следуя этим невидимым ограничениям его вектора , используя элемент класса и отслеживание идентификаторов. Обратите внимание, что это не вопрос о том, почему вы устанавливаете идентификаторы в первую очередь , я хочу знать, что будет лучшим методом, следуя этим правилам.Todo todos = Todo();
todos.add("Take out the trash."); todos.add("Do the laundry."); todos.add("Read a book."); todos.add("Make dinner."); < /code> Наш список выглядит следующим образом: < /p> {Todo[{Item(id=0, desc="Take out the trash.")}, {Item(id=1, desc="Do the laundry.")}, {Item(id=2, desc="Read a book.")}, {Item(id=3, desc="Make dinner.")}]} < /code> [list] [*] ids: 0, 1, 2, 3 < /code> < /li> < /ul>
Если я удалю элемент 2 < /code> < /p>
Результат: < /p> {Todo[{Item(id=0, desc="Take out the trash.")}, {Item(id=1, desc="Do the laundry.")}, {Item(id=3, desc="Make dinner.")}]} < /code>
ids: 0, 1, 3 < /code> < /li> < /ul>
Теперь мы удалили элемент в ID 2 < /code>, но я хочу сохранить его в [b] упорядоченной последовательности. 2 . Если я вызову свою функцию fix () , она будет выполнять каждый индекс нашего Todos , проверьте, соответствует ли идентификатор элементов ожидаемому следующему идентификатору, если он не установите идентификатор элементов в текущий индекс итерации (i) void Todo::fix() { for (int i = 0; i < static_cast(todos.size()); i++) { if (todos[i].getId() != i) { todos[i].setId(i); } } } < /code> Вот мой код: < /p> todos.add("Take out the trash."); todos.add("Do the laundry."); todos.add("Read a book."); todos.add("Make dinner."); todos.remove(2); todos.fix();
Если мы запустим это, наш Todos теперь будет: {Todo[{Item(id=0, desc="Take out the trash.")}, {Item(id=1, desc="Do the laundry.")}, {Item(id=2, desc="Make dinner.")}]}
ids [/b]: 0, 1, 2 [/list] Отлично! Я получил результат, который хотел, но вот вопрос: < /p> Это самый эффективный способ выполнить эту задачу в C ++? Кажется, что если бы это был больший список, он мог бы стать ресурсным и медленным. Есть ли какой-нибудь более быстрый/более эффективный способ сделать это?#include #include
Мне нужно предоставить API-интерфейс Consumer(sequence) ниже, который требует, чтобы его коллекция последовательностей аргументов была упорядочена, как показано в приведенном ниже отрывке:
interface Consumer {
/**
* @param sequence: an *ordered*...
Я пытаюсь создать в sqlalchemy самоссылающуюся связь «многие ко многим», чтобы иметь возможность извлекать и изменять их, обеспечивая при этом правильный порядок.
У меня есть таблица серверов, и хотелось бы иметь цепочку для каждого сервера,...
Я заметил изменения в макете моего приложения React, особенно при анимации компонентов по порядку. Проблема возникает, когда я пытаюсь анимировать заголовок с помощью анимации набора текста, а затем анимировать основной текст с эффектом постепенного...
Итак, моя проблема проста - поддерживать упорядоченный набор входов, которые не позволяют дубликатам. Вот пример, показывающий обе реализации:
class TestClass{
private final Set setOfThingIds;
private final List listOfThings;
private final Set...
Итак, моя проблема проста - поддерживать упорядоченный набор входов, которые не позволяют дубликатам. Вот пример, показывающий обе реализации:
class TestClass{
private final Set setOfThingIds;
private final List listOfThings;
private final Set...