Порівнюємо структуру у функціональному та імперативний програмуванні
Варто відразу обмовиться, що проектувати структури для функціональних мов складніше, ніж для імперативних, як мінімум, на це є дві причини:
Що включає в себе структура?
Часто дані, з якими працюють програми, що зберігаються у вбудованих в застосовуваному мовою програмування масивах, константі або змінної довжини. Масив – це найпростіша структура з відомостями, однак для вирішення деяких завдань потрібна більша ефективність деяких операцій, тому застосовуються інші структури (складніше).
Найпростіший масив підходить для частого звернення до встановлених компонентів за індексами і їх зміни, а видалення елементів із середини функціонує за принципом O(N)O(N). Якщо вам потрібно видалити елементи, щоб вирішити певні завдання, то доведеться скористатися іншою структурою. Наприклад, бінарне дерево (std::set) дозволяє робити це за O(logN)O(logN), однак воно не підтримує роботу з індексами, виконується виключно почерговий обхід елементів і їх пошук за значенням. Таким чином, можна сказати, що структура відрізняється операціями, що вона здатна виконувати, а також швидкістю їх виконання. Для прикладу варто розглянути найпростіші структури, що не дають вигоди в ефективності, але мають точно встановлений набір підтримуваних операцій.