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

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

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

Перегрузка операторов для list - C++

21.10.2012, 16:26. Просмотров 627. Ответов 6
Метки нет (Все метки)

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

Перегрузка операторов для списков - C++
Как сделать перегрузку оператора умножить (оператор возвращает адрес первого элемента списка нового списка, который содержит общие элементы...

Перегрузка операторов для классов - C++
Определить класс описывающий вектор в пространстве. Для класса перегрузить префиксный унарный оператор. Написать программу в которой...

Перегрузка операторов для контейнера - C++
Доброго времени суток. Просматривая STL, в ветке вектора наткнулся на такую интересную запись: vector<int> v1 = {45,85,68}; ...

Перегрузка операторов не для объектов - C++
Можно ли так делать? Потому что в таком случае вызывается не мой оператор, а исключающее или, стандарнтое. Как и что сделать, чтобы...

Перегрузка операторов для класса - C++
class A { private: size_t i; public: size_t i_get() { return i; } };

Перегрузка операторов для класса МАССИВ - C++
Привет. Есть класс "вектор" ("массив"), нужно переопределить операторы =, +, - , *, +=, -=, *= с целым числом. =, +=, -=, *=, как...

6
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
21.10.2012, 16:51 #2
В основе перегрузки оператора индкксирования лежит фунция find(int index):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CCell * CQueue::find (int index)            
{
    if ( index < 1 || index > _count )      
    {   
        return 0;
    }
    else                                    
    {
        CCell * temp_find_cell = _head;     
        for ( int i = 1; i < index; i++ )   
        {
            temp_find_cell = temp_find_cell->get_next();    
        };
        return temp_find_cell;              
    };  
}
Оператор индексирования:
C++
1
2
3
4
5
6
7
8
9
10
void CQueue::operator [] (int index)        
{
    if (!find(index))
    {
        cout << "Invalid index !!!" << endl;
        return;
    }
    find(index)->get_data();                
    cout << endl;                           
}
0
adfwefwefw
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 3
21.10.2012, 17:29  [ТС] #3
Спасибо, и ещё вопрос. Какой деструктор для объекта типа list? Я нашёл только ~_List_base , это то, что нужно?
0
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
21.10.2012, 17:38 #4
Если ты в списке работаешь с динамической памятью, то в деструкторе необходимо упомянуть delete. Иначе деструктор можно не определять.
0
soon
21.10.2012, 17:44
  #5

Не по теме:

Цитата Сообщение от adfwefwefw Посмотреть сообщение
Какой деструктор для объекта типа list? Я нашёл только ~_List_base , это то, что нужно?
Сдается мне, вы залезли в исходники std::list и намерены править непосредственно там. Это так?

0
adfwefwefw
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 3
21.10.2012, 21:19  [ТС] #6
Сдается мне, вы залезли в исходники std::list и намерены править непосредственно там. Это так?
Нет, вообщем-то с этим разобрался уже, только всё ещё не ясно с перегрузкой операции [], неужели нельзя по-другому?
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
24.10.2012, 13:31 #7
Цитата Сообщение от adfwefwefw Посмотреть сообщение
неужели нельзя по-другому?
В списке, построенном на основе связей (т.н. связном списке), а именно такой используется у вас - нельзя. В том и соль связного списка, что его узлы "разбросаны" по памяти, скорее всего лежат в ней не в порядке добавления, а связность структуре списка придают некие направленные "цепочки", тянущиеся от одного узла к другому.
0
24.10.2012, 13:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2012, 13:31
Привет! Вот еще темы с ответами:

Перегрузка операторов для класса треугольника - C++
Дан класс Треугольник, включающий в себя закрытые поля для сторон и медиан. Указать все необходимые функции инициализации и доступа к...

Перегрузка операторов для работы со стеком - C++
Текст задания: Создать объект &quot;динамический стек&quot;. Перегрузить операции +, -, +=, -= для выполнения манипуляций со стеком. Вот...

Перегрузка операторов для класса polynom - C++
Создаю класс полиномов (polynom), в нём надо перегрузить ряд операторов. Где-то нашёл пример, где оператор сложения перегружается так: ...

Перегрузка операторов для наследованных классов - C++
Есть один класс, для него определена операция сложения. Есть так же наследованный класс для него работает операция сложения определенная...


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

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

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