2 / 2 / 0
Регистрация: 22.03.2022
Сообщений: 225

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

19.02.2024, 14:37. Показов 1636. Ответов 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
Покинул чат.
1133 / 728 / 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
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,289
27.02.2024, 20:08
sdf45, а я из этого потока сознания вообще ничего не понял

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

ТЗ - хз

Добавлено через 53 секунды
SektorCT, давай без абстракций, просто расскажи, в чём задача заключается
0
Покинул чат.
1133 / 728 / 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
Покинул чат.
1133 / 728 / 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Теория всего 6. Судьба неотвратима?
anaschu 21.07.2026
Математическое доказательство Судьбы: Точка бифуркации в едином тензорном ядре Модели ВсегоСвежее обновление питоновского ядра «Soil Chemistry 2. 0» дало нам неопровержимое математическое. . .
Теория всего 5. ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли
anaschu 21.07.2026
Единое ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли Главная задача «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы» (аттракторов. . .
сукцессия 37. Внедрил дипсик в свой оркестр из ИИ. У него закончилось пространство чата, потому опубликую выводы из его работы здесь
anaschu 21.07.2026
==================================================================== КОНТЕКСТ: Моделирование микоризной сукцессии (AM → ECM) ==================================================================== . . .
сукцессия 36. Делаю прогоны модели около порога бифуркации (превращения эндо микоризы в экто микоризу)
anaschu 21.07.2026
СУКЦЕССИЯ МИКОРИЗ: КАК МАТЕМАТИКА ОБЪЯСНЯЕТ ПОДЗЕМНУЮ ВОЙНУ Мы привыкли думать, что лес — это деревья. А грибы — это то, что мы собираем в корзинку осенью. Но если заглянуть под землю, окажется,. . .
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного. 1. Почему показания термометра заряжены целью? Цель заложена в самом. . .
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru