Мой любимый язык – PHP. Он изящен и прост, но, к сожалению, предназначен только для программирования сайтов. «Обычную» программу на нём не напишешь.
К счастью, некоторые технологии, реализованные в PHP можно перенести и в другие языки программирования: например, в C++.
Одна из таких технологий – ассоциативные массивы.
В ассоциативном массиве вместо числовых индексов используются ключи любых типов. Данные в ассоциативном массиве так же могут быть разнотипными.
К примеру:
Возможно вы искали - Статья: Обработка строк в РНР
ass_arr array;
array[0] = 123;
array["name"] = "John Silver";
Здесь в массиве array создаются два элемента, один из которых имеет ключ «0» и числовое значение «123», другой – ключ «name» и строковое значение «John Silver». «ass_arr» – не массив задниц, как подумало большинство читателей, а возможное имя типа (класса) ассоциативного массива.
Удобно? Удобно! Не нужно описывать входящие в массив элементы и их типы. Не нужно думать о размере массива – он динамичен. Не нужно заботится ни о чём, кроме свободной памяти.
Похожий материал - Статья: Некоторые аспекты обеспечения эффективности работы системы управления базами данных
Подробнее об удобствах
Ассоциативный массив – всего лишь способ представления данных. Любая задача, решаемая посредством ассоциативных массивов, может быть решена посредством структур или классов. Однако, использование ассоциативности существенно упрощает решение многих задач.
Рассмотрим простой пример. Возьмём структуру, в которой хранятся настройки некоей программы. Опишемеётак:
struct preferences
{
Очень интересно - Статья: Отправка запроса методом POST на сервер из .NET приложения
int WindowWidth;
int WindowHeight;
int WindowX;
int WindowY;
char documentPath[128];
Вам будет интересно - Статья: Работа с регулярными выражениями в SQL Server
};
Для сохранения данных этой структуры где-либо, потребуется специальная функция, которая будет «знать» все поля, которые присутствуют в этой структуре. Например, такая:
bool savePreferences(struct preferences* pref)
{
saveInteger(pref->WindowWidth);
Похожий материал - Курсовая работа: Реляционные модели базы данных
saveInteger(pref->WindowHeight);
...
saveString(pref->documentPath);
}