Реферат по предмету "Программирование"


Индексирование

Индексирование

Чтобы задать смысл индексов для объектов класса
используется функция operator[]. Второй параметр (индекс) функции operator[]
может быть любого типа. Это позволяет определять ассоциативные массивы и т.п. В
качестве примера давайте перепишем пример , где при написании небольшой
программы для подсчета числа вхождений слов в файле применялся ассоциативный
массив. Там использовалась функция. Здесь определяется надлежащий тип
ассоциативного массива:

struct pair {

  char* name;

  int val;

};

class assoc {

  pair* vec;

  int max;

  int free;

public:

  assoc(int);

  int&
operator[](char*);

  void
print_all();

};

В assoc хранится вектор пар
pair длины max. Индекс первого неиспользованного элемента вектора находится
в free. Конструктор выглядит так:

assoc::assoc(int s)

{

  max =
(s

  free = 0;

  vec = new pair[max];

}

При реализации применяется все тот же простой и
неэффективный метод поиска. Однако при переполнении assoc увеличивается:

#include

int assoc::operator[](char* p)

/*

  работа с
множеством пар "pair":

  поиск p,

  возврат ссылки на
целую часть его "pair"

  делает новую
"pair", если p не встречалось

*/

{

  register pair*
pp;

  for
(pp=&vec[free-1]; vec

      if
(strcmp(p,pp->name)==0) return pp->val;

  if (free==max) {    // переполнение: вектор увеличивается

      pair* nvec
= new pair[max*2];

      for ( int
i=0; iname = new char[strlen(p)+1];

  strcpy(pp->name,p);

  pp->val =
0;     // начальное значение: 0

  return
pp->val;

}

Поскольку представление assoc скрыто, нам нужен способ
его печати. В следующем разделе будет показано, как определить подходящий
итератор, а здесь мы используем простую функцию печати:

vouid assoc::print_all()

{

  for (int i = 0;
i>buf) vec[buf]++;

  vec.print_all();

}
Список литературы

Для подготовки данной работы были использованы материалы
с сайта http://www.realcoding.net


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Необходимая оборона и ее уголовно правовое значение
Реферат Переходные и свободные колебания
Реферат Співробітництво Болгарії, Румунії та Югославії з політичними, воєнними та економічними міжнародними організаціями
Реферат Нормативно-правовые основы социальной поддержки детей-сирот и детей, оставшихся без попечения родителей
Реферат Степлаг
Реферат Эмоциональные процессы. Воля как форма активности
Реферат Roman Civil War And Caesar Essay Research
Реферат Hinduism Essay Research Paper Hinduism was founded
Реферат Выбор систем контроля и управления доступом
Реферат «Козацькому роду нема переводу!»
Реферат Инновационные технологии, используемые на занятиях в дошкольном учреждении
Реферат Электропривод полиграфической машины
Реферат Энергия океана
Реферат Актуальность формирования экологического сознания. Предмет и задачи экологической психологии
Реферат Издержки 3