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

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удаление отрицательных элементов. Подскажите.вопрос. http://www.cyberforum.ru/cpp-beginners/thread261302.html
Есть бинарный файл. Массивы использовать нельзя. Необходимо удалить в файле отрицательные элеметны. с помощью fseek fwrite. Проблемы с функцией. Первоначально хотела сделать через написание друг...
C++ Разложение числа по цифрам Здравствуйте, вообщем возникла такая проблема вроде бы и написал уже программу разложения числа по цифрам. но работает она магическим образом: с нечетными цифрами как надо, а вот с четными только... http://www.cyberforum.ru/cpp-beginners/thread261295.html
"Проскакивает" getline(), если ранее вводилась целочисленная переменная. Почему? C++
Итак... Имеется кусок кода, который должен принимать с клавиатуры порядковый номер работы (целое число), её название (строка) и описание (опять-таки, строка). Учитывая, что "название" и "описание"...
Получение данных о пк C++
какие функций существуют или как это сделать? например узнать какой процессор и какое на нем сейчас напряжение?)
C++ Вычислить суммы положительных элементов в каждой строке двумерного массива http://www.cyberforum.ru/cpp-beginners/thread261270.html
Вычислить суммы положительных элементов в каждой строке двумерного массива в С++ Builder 6.0
C++ Файлы. Динамические массивы. Вывести на экран элементы входной последовательности положительных целых чисел, встречающихся в ней не более одного раза. Входная последовательность сохраняется в файле "lab1.dat"в виде: <элемент... подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
22.03.2011, 01:40
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
class Allocator
{
public:
    template<class T1, class T2>
    void construct(T1* p, const T2& value)
    {
        new(p) T1(value);
    }
    template<class T>
    void destroy(T* p)
    {
        p->~T();
    }
    template<class Iter>
    void destroy(Iter first, Iter last)
    {
        while(first != last)
        {
            destroy(*&first);
            ++first;
        }
    }
};
 
template<class T, class Alloc=Allocator>
class Vector_base
{
public:
    Vector_base(T sz=0, Alloc al=Alloc()):arr_(static_cast<T*>(sz == 0 ? 0 :
        operator new(sizeof(T)*sz))), cap_(sz), sz_(sz), al_(al)
    {
    }
    ~Vector_base()
    {
        al_.destroy(arr_, arr_+sz_);
        operator delete(arr_);
    }
    void Swap(Vector_base& other) /*throw()*/
    {
        std::swap(arr_, other.arr_);
        std::swap(sz_, other.sz_);
        std::swap(cap_, other.cap_);
    }
    T* arr_;
    size_t sz_;
    size_t cap_;
    Alloc al_;
private:
    Vector_base(const Vector_base&);
    Vector_base& operator =(const Vector_base&);
};
 
template<class T, class Alloc=Allocator>
class Vector
{
public:
    Vector(size_t sz=0, Alloc al=Alloc()):impl_(sz, al)
    {
    }
    ~Vector()
    {
    }
    Vector(const Vector& other):impl_(other.impl_.cap_)
    {
        while(impl_.sz_ != other.impl_.sz_)
        {
            impl_.al_.construct(impl_.arr_ + impl_.sz_,
                other.impl_.arr_[impl_.sz_]);
            ++impl_.sz_;
        }
    }
    Vector& operator =(const Vector& other)
    {
        Vector temp(other);
        impl_.Swap(temp.impl_);
        return *this;
    }
    const size_t size() const
    {
        return impl_.sz_;
    }
    T& operator [](const size_t idx)
    {
        return *(impl_.arr_+idx);
    }
    const T& operator [](const size_t idx) const
    {
        return *(impl_.arr_+idx);
    }
private:
    Vector_base<T> impl_;
};
 
int main()
{
    const int n=10;
    Vector<int> vec(n);
    for(int i=0; i<n; ++i)
        vec[i]=i+1;
    for(size_t i=0; i<vec.size(); ++i)
        std::cout<<vec[i]<<'\n';
    return 0;
}
Ну или сюда Вектор наподобие STL можете заглянуть.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru