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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
#1

Класс Вектор - C++

12.10.2010, 18:48. Просмотров 1316. Ответов 3
Метки нет (Все метки)

Решил написать свой класс вектор, приблизительно как в СТЛ. Сначала решил сделать каркас. Все функции без аллокатора и итератора. Сделал. И теперь возникла проблема. Стоит ли писать самому простенький аллокатор? И как это делается, насколько я понял через malloc/free или же new/delete тоже можно? Или лучше использовать стандартный класс Allocator? По тому, как делается сам аллокатор упоминание нашел в трех книжках, точнее про существование такого.
Две книжки Шилдта.
Книжка Страуструпа.

Что посоветуете делать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2010, 18:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс Вектор (C++):

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов - C++
Привет! Задача следующая. Нужно реализовать класс "вектор" с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Класс вектор - C++
Не могу разобраться с этим классом, прошу помощи и в объяснении(задание очень объёмное ещё), проблема с самим вектором тоже есть. ...

Класс-вектор в С++ - C++
Здраствуйте. Передо мной стоит задача реализовать произведение и сложение векторов. Информации, той, что я нашел, оказалось мало. Программу...

Класс вектор - C++
необходимо написать класс вектор (в геометрическом смысле в трёхмерном пространстве) реализовать : поворот вектора вокруг осей...

Класс Вектор - C++
Здраствуйте! Может ли кто-нибудь помочь с объяснением проблемы , потому что я не знаю точно , что это берет. Это условие ....

Класс Вектор - C++
Помогите пожалуйста горит индевидуалка... Создать класс векторов поддерживающий следующие операции: изменение размеров вектора,сложение...

3
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
12.10.2010, 23:32 #2
Можно поковырять исходники

Не по теме:

http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/files.html

если ссылка не пройдёт,то гуглить надо на исходники stl
0
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
12.10.2010, 23:36 #3
Цитата Сообщение от Lavroff Посмотреть сообщение
И как это делается, насколько я понял через malloc/free или же new/delete тоже можно?
Простите, а какую итоговую разницу Вы видите между этими подходами?
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
12.10.2010, 23:39  [ТС] #4
ЗЫ. Доделал вроде. Протестировал на стандартном векторе - канает.

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
#include <limits>
 
template<class AllocType>
class Allocator
{
public:
    typedef AllocType value_type;
    typedef AllocType* pointer;
    typedef AllocType& reference;
    typedef const AllocType* const_pointer;
    typedef const AllocType& const_reference;
    typedef size_t size_type;
    typedef ptrdiff_t difference_type;
 
    Allocator();
    Allocator(const Allocator&);
    template<class OtherAlType>
    Allocator(const Allocator<OtherAlType>&) throw()
    {
    }
    Allocator& operator =(const Allocator&);
    ~Allocator();
    pointer adress (reference ref) const
    {
        return (&ref);
    }
    const_pointer adress (const_reference ref) const
    {
        return (&ref);
    }
    pointer allocate (size_type, const_pointer hint=0);
    void deallocate (pointer p, size_type n);
    const size_type max_size () const throw()
    {
        return std::numeric_limits<AllocType>::max();
    }
    pointer construct (pointer p, const_reference val);
    void destroy (pointer p);
    template<class OtherAlType>
    struct rebind
    {
        typedef Allocator<OtherAlType> other;
    };
};
 
template<class AllocType>
Allocator<AllocType>::Allocator() throw()
{
}
 
template<class AllocType>
Allocator<AllocType>::Allocator(const Allocator<AllocType>&)
{
}
 
template<class AllocType>
Allocator<AllocType>::~Allocator() throw()
{
}
 
template<class AllocType>
AllocType* Allocator<AllocType>::allocate(size_type sz, const_pointer hint=0)
{
    return new AllocType[sz];
}
 
template<class AllocType>
void Allocator<AllocType>::deallocate(pointer p, size_type)
{
    delete[] p;
}
 
template<class AllocType>
AllocType* Allocator<AllocType>::construct(pointer p, const_reference val)
{
    return new(p) AllocType(val);
}
 
template<class AllocType>
void Allocator<AllocType>::destroy(pointer p)
{
    p->~AllocType();
}
 
template<class AllocType>
Allocator<AllocType>& Allocator<AllocType>::operator =(const Allocator<AllocType> &)
{
    return *this;
}
 
template<class AllocType>
bool operator ==(const Allocator<AllocType>&, const Allocator<AllocType>&) throw()
{
    return true;
}
 
template<class AllocType>
bool operator !=(const Allocator<AllocType>&, const Allocator<AllocType>&) throw()
{
    return false;
}
0
12.10.2010, 23:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2010, 23:39
Привет! Вот еще темы с ответами:

Вектор класс - C++
Всем привет!!! Вот написал программу с класами а она не правильно работеает. Пожалуйста помогоите исправить ошыбки. Сама задача:Создать...

Класс Вектор - C++
Нужна помощь в написании программы. Класс &quot;Вектор&quot;. (Чем он отличается от массива? в том что мне дали про вектора ни слова. Помогите...

Класс вектор - C++
У меня есть задача: Разработать пользовательский тип “ вектор в n-мерном пространстве”. Для разрабатываемого типа обязательно определить:...

Класс вектор - C++
Создать абстрактный тип данных - класс вектор, который имеет указатель на float, число элементов и переменную состояния. Определить...


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

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

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