Juce: контейнери

Відео: Batman Arkham City. Серія 16 [2-ий контейнер з титаном. глушилка]

Juce: контейнери
Найбільш загальним контейнерним класом в Juce є Array, який дуже схожий на std :: vector. Об`єкти, які можна зберігати в цьому контейнері, зобов`язані мати конструктор копіювання і оператор присвоювання, як і в разі std :: vector, однак крім цього вони повинні бути переміщуються (не містити внутрішніх покажчиків на свої складові частини). Ця вимога навіть суворіше, ніж вимоги в STL, не кажучи вже про контейнерах NTL в U ++, де можна зберігати взагалі що завгодно. Навіщо потрібна така зайва строгість - незрозуміло. Створюються об`єкти Array звичним для З ++ чином, однак назви методів відрізняються від прийнятих в STL.

У Juce немає концепцій ітераторів і алгоритмів, як в STL. Замість цього деякі алгоритми реалізовані як методи самого контейнера. Наприклад, getFirst () і getLast () повертають посилання на перший і останній елемент контейнера, indexOf () -знаходити індекс переданого елемента, swapWithArray () - змінює два масиви місцями. Метод removeValuesIn (arr) видаляє з масиву всі елементи, наявні в іншому масиві, sort () - сортує масив згідно заданому критерію сортування, який передається в його першому параметрі.

Впорядковано за повинен передаватися як об`єкт, який реалізує метод:
int compareElements (ElementType first, ElementType second) -

Виглядає такий підхід дуже громіздко і нераціонально.




Для зберігання посилань на об`єкти в Juce є два спеціалізованих класи: OwnedArray і ReferenceCountedArray. Перший з них використовується для зберігання покажчиків на об`єкти, «власником» яких є сам контейнер. При видаленні елемента об`єкт також буде коректно видалений. Другий контейнер зберігає об`єкти, успадковані від ReferenceCountedObject, і управляє підрахунком посилань для них. Коли лічильник посилань обнуляється, об`єкт знищується.




Juce: контейнери

У GUI-додатках дуже часто потрібно зберігати списки рядків. Для цього передбачений спеціальний контейнер StringArray. Він містить ряд специфічних методів, які полегшують рутинні операції з такими списками. Наприклад, addIfNotAlready There () додає рядок, якщо її ще немає в списку, а addTokens () розбиває рядок на «слова» згідно з переданими розділювачам і «лапок» і додає всі отримані рядки в список. Метод joinIntoString () «збирає» список в єдиний рядок, removeDuplicates () - видаляє рядки-дублікати і т.д.

Як не дивно, в Juce немає узагальнених асоціативних контейнерів. Є тільки клас StringPairArray, які індексує список рядків строковими ключами. Немає також ніяких інших контейнерів - ні дерев, ні стеків, ні черг. На щастя, використовувати STL в Juce ніхто не забороняє.



Чи плануєте приступити до вивчення бібліотеки Juce відразу ж після того, як закінчите будівництво свого заміського будинку? Вікна для котеджів (https://za-okna.ru/dlya-kottedzhej/) я рекомендую Вам придбати в перевіреної компанії, яка поставляє якісну продукцію. На її роль ідеально підійде фірма «Ваші вікна»!

ІНШЕ

Juce: многопоточность фото

Juce: многопоточность

Нить в Juce реалізується класом Thread. Як і в багатьох інших тулкіта, це повністю віртуальний клас, наслідуючи який…

Обробка подій в juce фото

Обробка подій в juce

Відео: Уроки javascript | Урок №13 - Події і обробник подій Переважна більшість тулкіта для С ++ (Gtk +, Qt,…

Juce: враження і висновки фото

Juce: враження і висновки

Відео: Малайзійка на підлогу шишечки - NASTY Juice! Бібліотека Juce виробляє двояке враження. Багато її можливості…

Знайомство з bibus фото

Знайомство з bibus

Перший запуск Bibus Серед відкритих менеджерів бібліографії Bibus (https://bibus-biblio.sourceforge.net) найбільш схожий…

Juce: вкладені компонування фото

Juce: вкладені компонування

вкладені компонування У Juce використовується ідеологія, розглянута в попередній статті по U ++, - ієрархія віджетів…

Взаємодія chaiscript з c ++ фото

Взаємодія chaiscript з c ++

Відео: Jason Turner: Why and How To Add ScriptingІдеологія взаємодії ChaiScript і С ++ Скриптова мова ChaiScript…

» » Juce: контейнери