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

Оператор индексации и присваивания для шаблонного класса Vector C++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вылетает консольное приложение http://www.cyberforum.ru/cpp-beginners/thread926723.html
При написании любой даже самой простой задачи или программы, а также в дальнейшем запуске консольное приложение(командная строка, программа и т.д.) просто включается/вылетает спустя 1сек.! сам .exe...
C++ Работа с Итераторами Здравствуйте, у меня возникла следующая проблема. У меня есть list<pair<int, int> > snake; Мне надо, чтобы следующий элемент списка принимал значение нынешнего. Может кто-то пожалуйста написать... http://www.cyberforum.ru/cpp-beginners/thread926666.html
Sink C++
Здорова! Непонятная задачка: "Напишите итератор вывода, Sink, который в действительности ничего никуда не пишет. Где такой Sink может быть полезен? " Что такое итератор вывода? Я от знаю два вида...
Задачка на implace_merge C++
Здорова! Есть задачка: "Представьте, что вы ведете записи о группе спортсменов-рыболовов. Для каждого улова записывайте вид рыб, ее вес, дату, фамилию рыболова и т.д. Отсортируйте и распечатайте...
C++ Упражнение из Страуструпа (Определите таблицу названий месяцев года и числа дней в них) http://www.cyberforum.ru/cpp-beginners/thread926631.html
Определите таблицу названий месяцев года и числа дней в них. Выведите ее. Сделайте это два раза: один раз используя вектор для названий и вектор для числа дней, и один раз используя вектор структур,...
C++ Заголовочный файл Для чево етот файл используется??? Как ево использовать в своей программе помогите хочу разобраться) подробнее

Показать сообщение отдельно
k_flynn
0 / 0 / 0
Регистрация: 21.07.2013
Сообщений: 7

Оператор индексации и присваивания для шаблонного класса Vector C++ - C++

21.07.2013, 22:33. Просмотров 985. Ответов 1
Метки (Все метки)

Было задание разработать шаблонный класс Vector и к нему перегрузить оператор [] таким боразом, чтобы он "должен позволять как получить значение элемента так и изменить его. Получение значения должно успешно работать для константных объектов". Просто индексацию я сделал, а вот как реализовать его вместе с присваиванием расчехлить не могу. Помогите неудачнику
p.s функции set и get остались от изначального класса. я так понял из них и нужно сделать перегруженный оператор, но не соображаю как
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
142
143
144
145
146
147
148
149
150
151
152
#include <cstring>
#include <iostream>
#include <cassert>
using namespace std;
 
template < class T > class Vector
{
private:
    T* mas;
    int size;
    int capacity;
public:
    Vector(); 
    Vector(int);
    Vector(const T*,int);
    Vector(const Vector&);
    ~Vector();
    int getSize() const;
    int getCapacity() const;
    /* double get(int pos) const
    {
        return mas[pos];
    }
    void set(double val, int pos)
    {
        mas[pos] = val;
        if (pos>=size)
        {
            size++;
        }
    } */
    void insert(T, int);
    void erase(int);
    T& operator  []  (int pos) 
    {
        return  mas[pos];
    } 
    friend bool operator == (const Vector<T>&, const Vector<T>&);
    friend bool operator == (const Vector<T>&, T op1);
    friend bool operator != (const Vector<T>&, const Vector<T>&);
    friend bool operator != (const Vector<T>&, T op1);
 
    friend ostream& operator << (ostream&, const Vector< T >);
};
 
template < typename T > Vector< T >::Vector()
{
    capacity = 10;
    size = 0;
    mas = new T [capacity];
}
template < typename T > Vector< T >::Vector(int capacity)
{
    size=0;
    this -> capacity = capacity;
    mas = new T [capacity];
}
template < typename T > Vector< T >::Vector(const T* ptr,int size)
{
    this->size = size;
    capacity = size+1;
    mas = new T[capacity];
    for(int i = 0; i<=size; i++)
    {
        mas[i]=ptr[i];
    }
}
template < typename T > Vector< T >::Vector(const Vector &a)
{
    size=a.size;
    capacity=a.capacity;
    mas = new T[capacity];
    for(int i = 0; i<=size; i++)
    {
        mas[i]=a.mas[i];
    }
}
template < typename T > Vector< T >::~Vector()
{
    delete[] mas;
}
template < typename T > int Vector< T >::getSize() const
{
    return size;
}
template <  typename T > int Vector< T >::getCapacity() const
{
    return capacity;
}
template < typename T > void Vector< T >::insert(T val, int pos)
{
    if(size == capacity)
    {
        this ->mas = new T [capacity*=2];
        for(int i = 0; i<size; i++)
            this -> mas[i]=mas[i];
    }
    for(int i=size; i>pos; i--)
    {
        mas[i]=mas[i-1];
    }
    mas[pos]=val;
    size++;
}
template < typename T > void Vector< T >::erase(int pos)
{
    for(int i=pos; i<size; i++)
        this -> mas[i] = this -> mas[i+1];
    size--;
}
template < typename T > bool operator == (const Vector<T> &ob1,const Vector<T> &ob2)
{
        if(ob1.size!=ob2.size)
        {
                return false;
 
                for(int i=0; i<=ob1.size; ++i)
                {
                        if(ob1.mas[i] != ob2.mas[i])
                        {
                                return false;
                        }
                }
                return true;
        }
}
template < typename T > bool operator == (const Vector<T> &ob1, T op1)
{
        int i;
        for(i=0; i<=ob1.size; ++i) 
        {
                if(ob1.mas[i] != op1)
                {
                        return false;
                }
        }
        return true;
}
template < typename T > bool operator != (const Vector<T> &ob1,const Vector<T> &ob2)
{
        return !(ob1 == ob2);
}
 
template < typename T > bool operator != (const Vector<T> &ob1, T op1)
{
        return !(ob1 == op1);
}
 
int main()
{
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.