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

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

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

Показать сообщение отдельно
k_flynn
0 / 0 / 0
Регистрация: 21.07.2013
Сообщений: 7
21.07.2013, 22:33     Оператор индексации и присваивания для шаблонного класса Vector C++
Было задание разработать шаблонный класс 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru