Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #71, ОКТЯБРЬ 2006 г.

бирюльки

АНТОН ПАЛАГИН AKA TONY

Спецвыпуск: Хакер, номер #071, стр. 071-008-2


ЛИСТИНГ

работа с массивами

int array1[10]; //Определение обычного массива

vector<int> stlArray1; //То же самое, но с помощью STL

array1[0] = stlArray1[5] = 10; //Присваивание значения элементам массива

float array3[10][15][30]; //Определение трехмерного массива

vector< vector< vector<float> > > stlArray3; //То же самое, но с помощью STL

array3[1][0][10] = stlArray3[9][2][4] = 0.1f; // Присваивание значения элементам массива

map< string, int > mapArray; //Определение ассоциативного массива, в котором ключом

//является строка текста (имя человека), а значением

//его возраст (целое число).

[списки.]

Список — это тоже производная массива, правда, здесь тебе никто не даст гарантию, что элементы списка будут лежать в памяти последовательно. Каждый элемент списка имеет ссылку на следующий элемент. Такой список называется однонаправленным связанным списком. Если элемент списка хранит ссылку на следующий и предыдущий элементы, то это двунаправленный список. Двунаправленные списки реализуются с помощью контейнера list. Все эти структуры данных являются линейными по своей сути и используются, когда обрабатываются одномерные последовательности данных — сортируются, выбираются нужные элементы и т.д.

ЛИСТИНГ

работа со списками

//Определение элемента односвязного списка

template< class T >

struct SimpleElem

{

T elem; //Текущий элемент

SimpleElem * next; //Указатель на следующий элемент

};

//Определение элемента двусвязного списка

template< class T >

struct BiElem

{

T elem; //Текущий элемент

BiElem * prev; //Указатель на предыдущий элемент

BiElem * next; //Указатель на следующий элемент

};

[таблица.]

Если вести речь об основных способах хранения данных, то нельзя не упомянуть таблицы — основные единицы хранения данных в современных СУБД. Это тоже своего рода двумерный массив, но массив неоднородных данных, которые к тому же должны обладать специальными характеристиками, такими как уникальность, определенность, размер данных ячейки таблицы и т.д. Таблица состоит из столбцов и строк. Каждая ячейка однозначно определяется двумя координатами — номерами строк и столбцов.

ЛИСТИНГ

определение таблицы

//Определяем столбцы таблицы

struct Row

{

std::string firstName;

std::string secondName;

int age;

};

//Определяем набор строк таблицы

std::vector< Row > Table;

//Доступ к ячейке таблицы

Table[10].age = 28;

[графы.]

Граф — наиболее общий вид древовидных структур данных. Если продолжать пищевые ассоциации, то узлы графа — это узлы ветвей виноградной лозы, а сами виноградины — это узлы нижнего уровня без дочерних узлов (так называемые leaf'ы). Узлы графа соединены между собой ребрами. Графы применяются для алгоритмов оптимизации, например, для выбора наиболее оптимального маршрута передачи пакетов между маршрутизаторами. Графы изучает целая наука — теория графов. Существует превеликое множество различных графов, но остановимся только на тех видах, которые крутятся на языке.

Назад на стр. 071-008-1  Содержание  Вперед на стр. 071-008-3