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

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

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

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

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

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
08.04.2012, 18:32     Перегрузить операторы = и [] для hash #2
dederkay, нужно перегрузить operator= для элемента-значения, которое будет возвращаться (разумеется, по ссылке) при операции [].
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
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.04.2012, 19:45     Перегрузить операторы = и [] для hash #4
dederkay, а почему не
C++
1
std::string& operator[](const std::string& strKey)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2012, 19:48     Перегрузить операторы = и [] для hash
Еще ссылки по теме:

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

Как перегрузить операторы - C++
Есть класс &quot;Бегемоты&quot; у бегемотов есть пол и вес. Перегрузить операторы (+,-,*,/,) по следующему принципу. Если сложить двух...

Перегрузить операторы вектора, vector2d - C++
Чтоб вы меня больше понимали, начну издалека. Вот, допустим, есть задача, проинтегрировать систему обыкновенных дифференциальных...

Перегрузить операторы сравнения и отсортировать - C++
Добрый день. Требуется отсортировать данные из файла формата &quot;тип1 тип2 тип3 тип4&quot; только по &quot;тип1&quot; и &quot;тип2&quot; (в алфавитном порядке)....


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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
08.04.2012, 19:48     Перегрузить операторы = и [] для hash #5
dederkay, тут нужно использовать std::string, потому что обычные строки через = не присваиваются. В случае, если оператор [] производит ещё и добавление, то в операторе [] нужно создать новую ячейку, посчитать для неё хеш на основе переданного в оператор [] значения и вернуть ссылку на строку (пока пустую), в которую вы и запишите нужное значение. У меня такое ощущение, что вы думаете, что при x["str1"] = "str2" вызовется оператор = для хэш-таблицы. Это не так, вы из operator[] должны возвращать ссылку на значение (тип которого - std::string в нашем случае), для которого и будет вызван оператор =.
Yandex
Объявления
08.04.2012, 19:48     Перегрузить операторы = и [] для hash
Ответ Создать тему
Опции темы

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