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

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

Войти
Регистрация
Восстановить пароль
 
dederkay
34 / 34 / 0
Регистрация: 08.12.2010
Сообщений: 161
#1

Перегрузить операторы = и [] для hash - C++

08.04.2012, 17:44. Просмотров 372. Ответов 4
Метки нет (Все метки)

есть оператор который возвращает значение по ключу, как правильно написать оператор = для возможности писать такое
C++
1
hash["Motion"] = "Moto moto!";
хеш реализован двусвязным списком.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2012, 17:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузить операторы = и [] для hash (C++):

Перегрузить операторы +=, -=, *=, /= для класса Rational - C++
дан класс Rational, который описывает рациональное число. В нем определены методы add, sub, mul и div, которые прибавляют к нему число,...

Перегрузить операторы для класса Ромб. - C++
1. Опишите класс "Ромб" class Rhombus// Класс Ромб { float x,y, d1, d2 ; public: void input_Rhombus(); };Данные класса:...

Как перегрузить операторы для шаблонного класса? - C++
Собственно задание: Нужно написать класс описывающий обычный вектор на плоскости. Для этого класса вам нужно реализовать сложение,...

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

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

Как перегрузить операторы >> и << для структуры чтоб работалы итераторы? - C++
в файле двумерный массив вида 0 1 2 3 4 5 6 7 8 9 он считывает в двумерный вектор вот такой функцией if(!FileExists(FNAME_MATRIX))...

4
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
08.04.2012, 18:32 #2
dederkay, нужно перегрузить operator= для элемента-значения, которое будет возвращаться (разумеется, по ссылке) при операции [].
0
dederkay
34 / 34 / 0
Регистрация: 08.12.2010
Сообщений: 161
08.04.2012, 19:41  [ТС] #3
я так примерно и думал, но если
C++
1
char* operator[](char* strKey)
тогда в
C++
1
2
3
char* operator=(char* data)
Node* Temp = new Node;
Temp->key = _hash(/*откуда достать ключ*/);//или я чёт непонимаю(
помогите плз, ведь это очень интересно) буду благодарен
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.04.2012, 19:45 #4
dederkay, а почему не
C++
1
std::string& operator[](const std::string& strKey)
0
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
08.04.2012, 19:48 #5
dederkay, тут нужно использовать std::string, потому что обычные строки через = не присваиваются. В случае, если оператор [] производит ещё и добавление, то в операторе [] нужно создать новую ячейку, посчитать для неё хеш на основе переданного в оператор [] значения и вернуть ссылку на строку (пока пустую), в которую вы и запишите нужное значение. У меня такое ощущение, что вы думаете, что при x["str1"] = "str2" вызовется оператор = для хэш-таблицы. Это не так, вы из operator[] должны возвращать ссылку на значение (тип которого - std::string в нашем случае), для которого и будет вызван оператор =.
1
08.04.2012, 19:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2012, 19:48
Привет! Вот еще темы с ответами:

Для класса Vector перегрузить операторы присваивания, сравнения, ввода и вывода - C++
срочно помогите написать программу, желательно с комментариями если можно)) Для класса Vector перегрузить операторы присваивания, ...

Создать класс очередь Turn (содержащий числовое поле) и перегрузить для него операторы согласно условию - C++
Помогите пожалуйста, а то я запутался очень сильно. ;c Создать класс очередь Turn (содержит числовое поле). Перегрузить операторы: ...

Перегрузить операторы "+" для комплексных чисел: - C++
Перегрузить операторы + для комплексных чисел: А) Сделать функцию перегрузки оператора &quot;+&quot; дружественной класса. Б) Сделать функцию...

Перегрузить операторы - C++
Перегрузить операторы. Использовать спроектированые классы структур данных в соответствии с вариантом и спроектированые объекты этих...


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

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

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