Russian Qt Forum
Ноябрь 22, 2024, 23:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: first, second  (Прочитано 10102 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Ноябрь 01, 2015, 08:28 »

Добрый день

std::pair скромная, но очень полезная вещь. Но вот беда - эти безликие first, second порядком затрудняют понимание написанного. Можно ли как-то использовать вместо них свои, осмысленные имена?

Спасибо
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Ноябрь 01, 2015, 08:34 »

По моему, проще сделать свою структуру.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #2 : Ноябрь 01, 2015, 12:25 »

Как бы +1
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Bepec
Гость
« Ответ #3 : Ноябрь 01, 2015, 14:41 »

Так как вы любитель странных решений, можете задефайнить first и second в что то осмысленное Веселый Конечно появятся более пары сотен ошибок, но вы с ними справитесь, ради своего чувства прекрасного Веселый
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #4 : Ноябрь 01, 2015, 15:38 »

Ну еще можно отнаследоваться от пары и добавить методы с желаемыми именами для доступа к first и second... но стоит ли оно того..
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Ноябрь 02, 2015, 09:36 »

Структуру создай, это самое наглядное. Или tuple и enum'ом элементы обзови.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Ноябрь 02, 2015, 10:07 »

Структуру создай, это самое наглядное.
Ну как же я сам не сообразил? Улыбающийся Только вот многовато получается таких простеньких структур, только с конструктором и оператором <

Или tuple и enum'ом элементы обзови.
А как это  Непонимающий
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Ноябрь 02, 2015, 10:09 »

Код
C++ (Qt)
enum {Key, Value};
 
std::tuple<std::string, std::string> keyValue_;
std::get<Key> (keyValue_);
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #8 : Ноябрь 02, 2015, 11:28 »

Цитировать
Только вот многовато получается таких простеньких структур, только с конструктором и оператором <
Макрос напишите и плодите их сколько хотите)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Ноябрь 02, 2015, 11:42 »

Макрос напишите и плодите их сколько хотите)
Прошу исполнить
Записан
ssoft
Программист
*****
Offline Offline

Сообщений: 584


Просмотр профиля
« Ответ #10 : Ноябрь 02, 2015, 12:37 »

... Или tuple и enum'ом элементы обзови.

Самое корректное решение будет, к тому же легко расширяемое.

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #11 : Ноябрь 02, 2015, 12:51 »

Самое корректное решение будет, к тому же легко расширяемое.
Хмм... ну как-то оно не производит впечатления легкости и изящества Улыбающийся И оператора < что-то не видно. Но вот если эл-тов 3 и более - может тогда и тупли "попробывать"
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #12 : Ноябрь 02, 2015, 15:28 »

Цитировать
Прошу исполнить

Код
C++ (Qt)
#define CREATE_STRUCT(name, first, second) \
   template <class T1, class T2> \
   struct name \
   { \
       T1 first; \
       T2 second; \
        ...
   };
 
 
CREATE_STRUCT(range, min, max)
CREATE_STRUCT(point, x, y)
 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Ноябрь 02, 2015, 15:49 »

Код
C++ (Qt)
#define CREATE_STRUCT(name, first, second) \
   template <class T1, class T2> \
   struct name \
   { \
       T1 first; \
       T2 second; \
        ...
   };
 
 
CREATE_STRUCT(range, min, max)
CREATE_STRUCT(point, x, y)
 
К сожалению, так я теряю пусть небольшой, но приятный ф-ционал std::pair (конструктор(ы), оператор < и др). Может лучше макрос который наследует std::pair и определяет методы возвращающие ссылки? Но тогда заклинит std::make_pair...
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #14 : Ноябрь 02, 2015, 16:48 »

А в чем сложность добавить в макрос создание конструктора и нужных операторов?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.198 секунд. Запросов: 22.