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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sammm
3 / 3 / 1
Регистрация: 21.10.2012
Сообщений: 182
#1

Реализация собственного шаблона класса vector - C++

02.12.2013, 22:22. Просмотров 366. Ответов 0
Метки нет (Все метки)

Почему программа виснет, скажите, на что обратить внимание.
C++
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <string.h>
#define M 100
 
using namespace std;
 
class Item
{
public:
    int number;
    char * state;
};
 
template <class T>
class my_vector
{
    private:
        T * table;
        int n;
    public:
        my_vector();
        ~my_vector();
        Item& operator [] (int) const;
        char * dupl(char *);
        void del_Item(Item);
        int binsearch(int);
        int del(int);
        int inssort(int k, char * in);
        int insert(int k, char * in);
};
 
 
template <class  T>
my_vector <T> :: my_vector()
    {
        n = 0;
        for(int i = 0; i < M; i++)
        {
            table[i].number = 0;
            table[i].state = 0;
        }
    }
 
 
template <class  T>
my_vector <T> :: ~my_vector()
    {
        delete [] table;
    }
 
 
template <class  T>
Item& my_vector <T> :: operator [] (int i) const
    {
        return table[i];
    }
 
 
template <class  T>
char * my_vector <T> :: dupl(char * str)
{
    char *res = new char[strlen(str) + 1];
    strcpy(res, str);
    return res;
}
 
 
template <class  T>
void my_vector <T> :: del_Item(Item node)
{
    node.number = 0;
    delete [] node.state;
}
 
 
template <class  T>
int my_vector <T> :: binsearch(int key)
{
    int i = 0, k = n - 1, j;
    while(i <= k){
        j = (i + k) / 2;
        if(table[j].number == key)
            return j;
        if(table[j].number < key)
            i = j + 1;
        else
            k = j - 1;
    }
        return -1;
}
 
 
template <class  T>
int my_vector <T> :: del(int k)
{
    int i;
    if((i = binsearch(k)) < 0)
        return -1;
    del_Item(table[i]);
    --n;
    for(; i < n; i++)
        table[i] = table[i + 1];
    return 0;
}
 
 
template <class  T>
int my_vector <T> :: inssort(int k, char * state)
{
    int i;
    for(i = n-1; i >= 0 && table[i].number > k; i--)
        table[i + 1] = table[i];
    table[i + 1].number = k;
    table[i + 1].state = dupl(state);
    return ++n;
}
 
 
template <class  T>
int my_vector <T> :: insert(int k, char * state)
{
    if(binsearch(k) >= 0)
        return -1;
    if(n == M)
        return -2;
    return inssort(k, state);
}
 
 
int main()
{
    my_vector <Item> table;
    int k;
    char str[100];
    cin >> k;
    cin >> str;
    table.insert(k , str);
    cout << table[0].number << endl;
    cout << table[0].state << endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 22:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализация собственного шаблона класса vector (C++):

Std::vector добавить новый элемент собственного класса без использования конструктора копирования - C++
Всем привет! Есть один класс, который я хочу хранить в std::vector. Создать массив, с типом своего класса, грубо говоря. Естественно,...

Проверка правильности шаблона класса vector? - C++
Задание для лабараторки Название класса: Вектор и перегружаемая операция &lt;&lt; (вывод коллекции в поток вывода). У меня что-то получилось...

Реализация класса Vector - C++
Добрый день всем! Пишу реализацию класса vector, но не могу разобраться, как написать ручные push_back и pop_back, может у кого есть...

Реализация шаблона класса - C++
Большая-пребольшая просьба, помогите, пожалуйста, с решением данной задачи. Саму задачу реализовать не сложно, но вот с использованием...

Реализация шаблона класса char - C++
#include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;string&gt; using namespace std; char a; int aa,a1,sk=50,k=0; template &lt;class T&gt; ...

Программная реализация класса обработки одномерного массива с использованием шаблона - C++
Описать класс Array обработки одномерных массивов произвольного размера и типа. Использовать шаблон для типа &lt;template&gt;. Память выделяется...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2013, 22:22
Привет! Вот еще темы с ответами:

Программная реализация класса обработки одномерного массива с использованием шаблона - C++
Описать класс Array обработки одномерных массивов произвольного размера и типа. Использовать шаблон для типа &lt;template&gt;. Память выделяется...

Запись в собственного класса бинарный файл собственного - C++
есть Свой тип данных дробь. Надо реализовать запись и загрузку в\из бинарного файла. #ifndef RATION_H #define RATION_H #include...

Реализация класса MyString. Стандартная библиотека, std::string, std::vector - C++
как добавить реализацию конкатенации строк через перегрузку оператора &quot;+=&quot; в классе MyString и почему ошибка выдается???#include...

Как корректно скопировать vector в vector внутри класса - C++
Есть класс принимающий в конструкторе vector: class test { test(std::vector&lt;std::string&gt; codeList); ~test(); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru