Я розвиваю фізичне моделювання, і оскільки я досить новачок у програмуванні, я постійно стикаюся з проблемами при створенні великих програм (в основному проблеми з пам'яттю). Я знаю про динамічне розподіл пам'яті та видалення пам'яті (new / delete тощо), але мені потрібен кращий підхід до того, як я структурую програму.
Скажімо, я моделюю експеримент, який триває кілька днів, з дуже великою швидкістю вибірки. Мені потрібно було б імітувати мільярд зразків та перебігти їх.
Як надзвичайно спрощена версія, ми скажемо, що програма приймає напруги V [i] і підсумовує їх у п'яти:
тобто NewV [0] = V [0] + V [1] + V [2] + V [3] + V [4]
то NewV [1] = V [1] + V [2] + V [3] + V [4] + V [5]
то NewV [2] = V [2] + V [3] + V [4] + V [5] + V [6] ... і це продовжується для мільярда проб.
Зрештою, я мав би V [0], V [1], ..., V [1000000000], а натомість єдиними, які мені потрібно буде зберігати для наступного кроку, є останні 5 В [i] с.
Як би я видалив / маніпулював частину масиву, щоб пам'ять знову могла використовуватись (скажімо V [0] після першої частини прикладу, де вона більше не потрібна)? Чи є альтернативи, як структурувати таку програму?
Я чув про malloc / free, але чув, що їх не слід використовувати в C ++ і що є кращі альтернативи.
Дуже дякую!
tldr; що робити з частинами масивів (окремими елементами), які мені більше не потрібні, що займають величезну кількість пам'яті?
V
а не в новому масиві. Принципово, однак, я думаю, що ваше питання чи в алгоритмах, чи у ваших структурах даних, і оскільки у нас немає деталей, важко знати, як це зробити ефективно.