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

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

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

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

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

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

Перегрузить операторы C++
C++ Как перегрузить операторы >> и << для структуры чтоб работалы итераторы?
Описать класс my_str и перегрузить для него операторы. C++
Перегрузить операторы для класса Ромб. C++
Перегрузить операторы сравнения и отсортировать C++
C++ Перегрузить операторы +=, -=, *=, /= для класса Rational
Как перегрузить операторы для шаблонного класса? C++
Создать класс очередь Turn (содержащий числовое поле) и перегрузить для него операторы согласно условию C++
C++ Нужно перегрузить операторы умножения и сложения
Создать класс Complex и перегрузить операторы C++
C++ Как правильно перегрузить операторы для собственных классов?
C++ Перегрузить операторы "+" для комплексных чисел:

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,025
Завершенные тесты: 1
08.04.2012, 18:32     Перегрузить операторы = и [] для hash #2
dederkay, нужно перегрузить operator= для элемента-значения, которое будет возвращаться (разумеется, по ссылке) при операции [].
dederkay
 Аватар для dederkay
34 / 34 / 0
Регистрация: 08.12.2010
Сообщений: 161
08.04.2012, 19:41  [ТС]     Перегрузить операторы = и [] для hash #3
я так примерно и думал, но если
C++
1
char* operator[](char* strKey)
тогда в
C++
1
2
3
char* operator=(char* data)
Node* Temp = new Node;
Temp->key = _hash(/*откуда достать ключ*/);//или я чёт непонимаю(
помогите плз, ведь это очень интересно) буду благодарен
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
08.04.2012, 19:45     Перегрузить операторы = и [] для hash #4
dederkay, а почему не
C++
1
std::string& operator[](const std::string& strKey)
silent_1991
Эксперт С++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,025
Завершенные тесты: 1
08.04.2012, 19:48     Перегрузить операторы = и [] для hash #5
dederkay, тут нужно использовать std::string, потому что обычные строки через = не присваиваются. В случае, если оператор [] производит ещё и добавление, то в операторе [] нужно создать новую ячейку, посчитать для неё хеш на основе переданного в оператор [] значения и вернуть ссылку на строку (пока пустую), в которую вы и запишите нужное значение. У меня такое ощущение, что вы думаете, что при x["str1"] = "str2" вызовется оператор = для хэш-таблицы. Это не так, вы из operator[] должны возвращать ссылку на значение (тип которого - std::string в нашем случае), для которого и будет вызван оператор =.
Yandex
Объявления
08.04.2012, 19:48     Перегрузить операторы = и [] для hash
Ответ Создать тему
Опции темы

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