Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 22.03.2022
Сообщений: 225

Проход по контейнеру и получение последнего активного значения

19.02.2024, 14:37. Показов 1541. Ответов 28
Метки с++ (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Есть лист структуры, каждая структура это значение и булево значение активности.
Все структуры находятся в строгом порядке, то есть 1,2,3,4,5. Не может быть такого чтобы была ситуация 1,2,5,4,3.
Активными могут быть минимум 0 а максимум например 5, и нужно узнать какой последний.
Количество активных может меняться постоянно, а значит нужен постоянный проход.

Вопрос, как можно такой алгоритм поиска осуществить чтобы быстро находить последний?

Иметь дополнительно под каждую структуру еще флаг?
Посоветуйте пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.02.2024, 14:37
Ответы с готовыми решениями:

Проход по какому-либо контейнеру
Всем привет. Когда изучал set наткнулся на такой способ прохода for(auto i : set). И недавно наткнулся на такую же запись в массиве. Я так...

Выделение всей активной строки со значениями до последнего активного значения в таблице
Здравствуйте, прошу помощи Есть таблица, со значениями, где мне нужно выделить всю активную строку со значениями до последнего активного...

Получение последнего значения поля с автоинкрементом
Делаю запись в БД (там ключевым полем является номер ID с "AUTO_INCREMENT"), как после этого действия получить ID новой записи? P.S. В...

28
2 / 2 / 0
Регистрация: 22.03.2022
Сообщений: 225
27.02.2024, 19:49  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от lemegeton Посмотреть сообщение
Расскажите подробнее, что вы пишете.
Попробую сейчас получше описать.
В методе вызывается в бесконечном цикле прилетает аргумент, в нем есть лист со структурой, главное в нем для меня это 2 поля, число и активность.
Данный аргумент в метод передается уже в возможном измененом виде, то есть что-то будет активно, какие то значения могут остатся не активными. Привожу пример вариантов, каждая сторона будет как новая итерация и только активности.
0 0 0 0
0 0 0 0
0 1 0 0
0 1 0 1
0 0 1 1
0 0 0 0
0 1 0 1
0 1 1 0
Как видите состояние активности меняется по разному. и для моей задачи надо знать какой по индексу был последним активный, и по индексу я потом я образаюсь за другйо информацией, в частности за числом.
Вариант с переворачиванием данного листа, получение того кто оказывается в перевернутом самым первым, сохранение его индекса но в нормальнмо виде, мне показалось хорошим вариантом.
Сразу скажу, я ничего в лист добавлять не могу, я могу только читать то что в нем есть и реагировать на результаты.
0
Покинул чат.
1132 / 727 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
27.02.2024, 20:02
SektorCT, обьясни на этом примере, вот ты перевернул список, и взял первый элемент (а почему нельзя взять последний элемент исходного списка, нах его переворачивать то?) и почему ты считаешь, что этот элемент будет тем последним, который изменился? я честно не догоняю...

Добавлено через 3 минуты
вот у тебя некий массив, 1,2,3,4,5
поменялся 2-й элемент
ты взял последний 5й (или перевернул 5,4,3,2,1 и взял 1й который в исходном виде 5й)
но это ниразу не тот элемент, который менялся
или я чего-то не понимаю?
0
фрилансер
 Аватар для Алексей1153
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,054
27.02.2024, 20:08
sdf45, а я из этого потока сознания вообще ничего не понял

какой-то лист, какая-то активность

ТЗ - хз

Добавлено через 53 секунды
SektorCT, давай без абстракций, просто расскажи, в чём задача заключается
0
Покинул чат.
1132 / 727 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
27.02.2024, 20:15
Алексей1153, я (хз правильно или нет) понял так, что на входе есть некий вектор, элементами которого является структура вида struct{int value, bool status}, и status может меняться в каждой итерации получения этого вектора. И вот ТСу надо найти тот элемент вектора, в котором этот самый status изменился последним. То есть там где-то меняется скажем 2й, 8й, 3й элемент именно в таком порядке, и ему нужен последний -3й, откуда надо брать value
0
2 / 2 / 0
Регистрация: 22.03.2022
Сообщений: 225
27.02.2024, 20:37  [ТС]
Цитата Сообщение от sdf45 Посмотреть сообщение
я (хз правильно или нет) понял так, что на входе есть некий вектор, элементами которого является структура вида struct{int value, bool status}, и status может меняться в каждой итерации получения этого вектора. И вот ТСу надо найти тот элемент вектора, в котором этот самый status изменился последним. То есть там где-то меняется скажем 2й, 8й, 3й элемент именно в таком порядке, и ему нужен последний -3й, откуда надо брать value
по сути так как вы и описали, порядок ни меняется, числа ни меняются, меняется только активность. И нужен последний.
Зная индекс того статуса кто стал на данной итерации последним я моуг узнать к какому числу он относится.
Но всегда важно знать именно кто из статусов стал активным последний.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
27.02.2024, 21:30
Цитата Сообщение от Алексей1153 Посмотреть сообщение
а я из этого потока сознания вообще ничего не понял
потому что это не он, это поток запрограммированного роботом детеныша.
0
Покинул чат.
1132 / 727 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
27.02.2024, 21:45
SektorCT, лично мое мнение:
Если в приходящем векторе меняется не один, а несколько элементов, и никак нельзя изменить формат входящих данных, то никак нельзя узнать хронологию этих изменений, если она не приходит от меняющей стороны. Даже сохраняя копию или некое состояние предидущего значения. Во всяком случае, я таких способов не знаю. Насколько я понимаю, тут либо обновлять состояние полностью на каждой итерации изменений, либо сохранять предидущее состояние и обрабатывать только то, что изменилось. Если не ошибаюсь, сабж связан с Qt QML(моделями), и по идее, не стоит париться- используемая модель все сделает сама.
0
2 / 2 / 0
Регистрация: 22.03.2022
Сообщений: 225
27.02.2024, 22:17  [ТС]
Всем спасибо, извиняюсь что может не очень хорошо смог обьяснить. Исходя из последнего сообщения решил оставить обычный проход по контейнеру, и когда получаю последний активный индекс его сохраняю.
Проходить буду всегда с начала и до конца.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
27.02.2024, 22:29
Цитата Сообщение от sdf45 Посмотреть сообщение
Если в приходящем векторе меняется не один, а несколько элементов, и никак нельзя изменить формат входящих данных, то никак нельзя узнать хронологию этих изменений,
Только в стандартном веторе и только в нем.

Добавлено через 1 минуту
Цитата Сообщение от SektorCT Посмотреть сообщение
Проходить буду всегда с начала и до конца.
Да да, итак миллион елементов, тру вей ! Йв-Йв-натюрлих!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.02.2024, 22:29
Помогаю со студенческими работами здесь

Перемещение по контейнеру и получение значений
Всем привет. Есть QMap с такими значениями m_VecZoom.insert(0, 25); m_VecZoom.insert(1, 50); m_VecZoom.insert(2,...

Получение первого и пОследнего значения методом forEach
Здравствуйте :) Есть треугольники, вершины перебираю следующим образом mylib.getTriangles().forEach(function(triangle) { ...

Получение значения последнего элемента в поле ID списка List<>
как мне получить значение последнего элемента в указанном поле в списке?

Получение активного окна
Платформа 7.7 . Есть задачка. Надо на кнопку в панели инструментов повесть сохранение активной таблицы в файл(для последующей манипуляции)....

Получение дескриптора активного окна
Изобретаю свой велосипед скриншотер. Для этого потребовалось вытащить дескриптор активного, в данный момент, окна. То есть по нажатию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru