Форум программистов, компьютерный форум CyberForum.ru

Шаблоны. Хеш-функция - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Производные классы http://www.cyberforum.ru/cpp-beginners/thread587646.html
Уважаемые программисты, помогите блондинке с задачкой:scratch: В функции main создать инициализированный объект производного класса, и указатель на тип второго производного класса. Распечатать сумму элементов всех классов и отдельно каждого класса, используя указатель на второй производный класс. Базовый класс представляет собой структуру, которая содержит две переменные m,n с доступом по...
C++ неправильно считываются данные из WAV файла Всем привет! У меня проблема с получением данных из WAV файла. Почему то функция, которая написана ниже, возвращает размер блока data в 2 раза больше, чем он есть на самом деле. и если воспроизвести массив с данными data, то он будет воспроизводится в 2 раза быстрее, чем нужно (эти факты получены в результате проверки на MATLAB). Используемый файл - моно (с 1 каналом). подскажите, пожалуйста,... http://www.cyberforum.ru/cpp-beginners/thread587645.html
C++ Курсовая работа
мне необходимо написать курсовую работу на тему "визуализация алгоритма А* с помощью openGL" Программу написал, но никак не могу понять, что нужно написать в цель и задачи в ведении. может кто поможет советом ?
Инициализация массива длинны N C++
Требуется задать массив с Энным количеством членов, n вводится с клавиатуры. При попытке создания массива ... int n; scanf("%d",&n); А ... выдается ошибка "C2057: требуется константное выражение" пробуем так: ...
C++ Поправить описание класса для объектов-векторов, задаваемых координатами концов в двухмерном пространстве http://www.cyberforum.ru/cpp-beginners/thread587631.html
составить описание класса для объектов-векторов, задаваемых координатами концов в двухмерном пространстве. Обеспечить операции сложения и вычитания, вычисление скалярного произведения двух векторов, длины вектора, косинус угла между векторами. гребаная куча ошибок выручайте! #include <iostream> #include <math.h> #include <conio.h> #include <iomanip> using namespace std; struct...
C++ В программе не работает 1)удаление элемента, последнего в списке-зависает и В программе не работает 1)удаление элемента, последнего в списке-зависает и нужна операция обработки -обмен местами элементов с заданными номерами для этой программы На языке С++ #include "stdio.h" #include "conio.h" #include "windows.h" #include "locale.h" #include "stdlib.h" #include "string.h" #define OUTPUT_FILE "./OUTPUT.TXT" подробнее

Показать сообщение отдельно
Geniok
1 / 1 / 0
Регистрация: 20.09.2009
Сообщений: 29
27.05.2012, 16:27  [ТС]     Шаблоны. Хеш-функция
Сделал без шаблонов, так как смысла в данном конкретном случае в них нет.
Подскажите пожалуйста насчет освобождения памяти. В каком месте у меня возможна утечка и как лучше всего сделать.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class List
{
public:
    List();
    ~List();
 
    void push(char* name, int num);
    void print();
    void erase();
    //void erase(T val, M name);
    void clear();
    void find(char* name, int num);
 
private:
    struct Node
    {
        Node():Num(0), next(0)
        {
            Name = new char;
        }
 
        char* Name;
        int Num;
        Node* next;
    };
 
    Node* head;
    Node* tail;
 
    char* strCopy(char* in, char* to);
};
Реализация:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
List::List():head(0), tail(0)
{
}
 
List::~List()
{
    delete head;
    delete tail;
}
 
void List::push(char* name, int num)
{
    Node* Temp = new Node;
 
    Temp->Name = strCopy(Temp->Name, name);
    
    Temp->Num = num;
 
    if(head == 0)
    {
        head = Temp;
        tail = Temp;
        return;
    }
    tail->next = Temp;
    tail = Temp;
}
 
 
void List::print()
{
    if(head == 0)
    {
        throw std::string("List is empty!");
    }
 
    for(Node* ptr = head; ptr != 0; ptr = ptr->next)
    {
            std::cout << ptr->Name << ' ' << ptr->Num;
    }
    std::cout << '\n';
}
 
void List::erase()
{
    if(head == 0)
    {
        return;
    }
    Node* delptr = head->next;
    head = head->next;
    delete delptr;
}
 
void List::clear()
{
    while(head != 0)
        erase();
}
 
 
void List::find(char* name, int num)
{
    if(head == 0)
    {
        return;
    }
 
    for(Node* ptr = head; ptr != 0; ptr = ptr->next)
    {
        if(ptr->Name == name)
            std::cout<<"Element "<< name <<" is finded\n";
        return;
    }
    std::cout<<"Element "<< name <<" is not finded\n";
}
 
char* List::strCopy(char* in, char* to)
{
    char* tmp = in;
 
    while(*in++ = *to++)
        ;
    return tmp;
}
 
Текущее время: 21:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru