ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Індексування
         

     

    Інформатика, програмування

    Індексування

    Щоб визначити зміст індексів для об'єктів класу використовується функція 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 <16)? s: 16;

    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 <= pp; pp -)

    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

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status