Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2013, 12:00   #51
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
мне кажется, что если я помещу enum в начало, то компилятор не сможет разобрать "is_class::check<T1>", т.к. до check он еще "не дошел", но я не уверен.
Ну да, именно поэтому. Транслятор идет себе, компилирует, видит вызов некого check и законно ругается.
Вы же не используете функции без их объявления, так?)
На самом деле, когда транслятор берется уже за код методов класса, то там можно обращаться к данным, объявленным позже, потому что, видимо, за код он берется уже после прохода по классу и составления плана его внутренностей. А в данном случае enum - тип данных, знать, чем заинициализировать, нужно сразу, иначе какой же это тип данных.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 06.02.2013, 12:08   #52
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Сообщение от Granus Посмотреть сообщение
Ну да, именно поэтому. Транслятор идет себе, компилирует, видит вызов некого check и законно ругается.
Вы же не используете функции без их объявления, так?)
На самом деле, когда транслятор берется уже за код методов класса, то там можно обращаться к данным, объявленным позже, потому что, видимо, за код он берется уже после прохода по классу и составления плана его внутренностей. А в данном случае enum - тип данных, знать, чем заинициализировать, нужно сразу, иначе какой же это тип данных.
Спасибо, размеяли мои сомнения.
Тока использовать этот enum чуть менее удобно чем предыдущие варианты, но это можно, например, макросом поправить )
rrrFer вне форума Ответить с цитированием
Старый 06.02.2013, 12:46   #53
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
например, макросом поправить
Это, если нужно увеличить быстродействие, а так, и функции спраляються (если во-времени не критично).
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 06.02.2013, 13:42   #54
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Это, если нужно увеличить быстродействие, а так, и функции спраляються (если во-времени не критично).
Это да, но в этои примере функция должна принимать тип, например:
Код:
class A {
};

int main() {  
  std::cout 
    << is_class(A)
    << is_class(int);
}
я не представляю себе функцию, которая будет работать также.

Может быть:
Код:
template<typename T>
bool is_class() {
  return _is_class<T>::Value;
}
Но тогда ее использование выглядит хуже. Ну и опятьже мы получаем вызов функции во время выполнения, а не во время компиляции.

Последний раз редактировалось rrrFer; 06.02.2013 в 13:44.
rrrFer вне форума Ответить с цитированием
Старый 06.02.2013, 13:49   #55
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Код:
template<typename T>
bool is_class() {
  return _is_class<T>::Value;
}
Добавьте constexpr и можно будет использовать в compile-time.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 07.02.2013, 00:51   #56
_SOKOL_
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 44
По умолчанию

читая это всё понимаю что в программировании не стоит стараться понимать что то, иначе ничего не поймешь.....
вчера и сегодня узнал про контейнеры list и map, мое мнение лучше list, а по вашему какой и почему?
_SOKOL_ вне форума Ответить с цитированием
Старый 07.02.2013, 01:09   #57
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от _SOKOL_ Посмотреть сообщение
читая это всё понимаю что в программировании не стоит стараться понимать что то, иначе ничего не поймешь.....
вчера и сегодня узнал про контейнеры list и map, мое мнение лучше list, а по вашему какой и почему?
У них разные области применения. Выбор зависит от задачи
_Bers вне форума Ответить с цитированием
Старый 07.02.2013, 01:18   #58
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
читая это всё понимаю что в программировании не стоит стараться понимать что то, иначе ничего не поймешь.....
хм, выходит писать код не понимая что там?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.02.2013, 01:49   #59
_SOKOL_
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
хм, выходит писать код не понимая что там?
мда... глупо прозвучало, хотел сказать что не стоит сильно напрягать голову
_SOKOL_ вне форума Ответить с цитированием
Старый 07.02.2013, 07:04   #60
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
вчера и сегодня узнал про контейнеры list и map, мое мнение лучше list, а по вашему какой и почему?
значит ничего не узнал )
посмотри в книжках...например у Скиены, там есть несколько эротичных табличек в которые сведена информация о массивах, векторах, списках, деревьях, сортированных массивах и т.п.
мап - это самобалансирующееся дерево поиска, т.е. поиск за логарифмическое время, но при добавлении и удалении элемента нужна баллансировка, кроме того ты не можешь запросить энный элемент, потому что порядком элементов рулит сам словарь.
лист - динамический неупорядоченный список, время поиска линейное, добавление и удаление - константное (но смотря как напишешь, если перед этим придется искать элемент или искать предыдущий/последующий элемент {если односвязный список} - то тоже линейное), можешь запросить энный элемент (произвольный доступ работает), но получишь его за линейное время.

И Bers_ правильно грит про области приминения, вопрос о том использовать list или map обычно не стоит, хотя...можно придумать )
Но лучше в книжку посмотри )
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с чего начиНАТЬ С/С++!!!! dk118 Помощь студентам 0 05.12.2012 01:22
С чего начинать leonidsm Свободное общение 4 06.10.2012 19:37
Какой язык лучше всего выбрать после завершения изучения языка Паскаль. VektorAB Помощь студентам 4 09.07.2010 07:16
С чего начинать? Shadol Свободное общение 6 24.11.2009 11:46
С++ ЧЕГО НАЧИНАТЬ !!! geniy Общие вопросы C/C++ 12 03.09.2007 10:50