нет не так,
скажу, что ответ тебе покажется парадоксальным и нелогичным,
но это только на первый взгляд, если подумаешь дальше то согласишся что он очень логичен.
подождем, может ребята ответят.
кстати, это базовый принцип STL.
|
нет не так,
скажу, что ответ тебе покажется парадоксальным и нелогичным,
но это только на первый взгляд, если подумаешь дальше то согласишся что он очень логичен.
подождем, может ребята ответят.
кстати, это базовый принцип STL.
Последний раз редактировалось Ull9; 13.12.2006 в 16:34.
все пошел пиво пить.
мля, я в мухине уже полтора года, а все никак немогу все пиво перепробовать.
Очень классная книга для любителей JAVA. В ней есть почти все и качественным языком описано.
http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764568744.html
Ivor Horton пишет довольно понятным языком.Сообщение от pavlentus
но конкретно эту книгу не читал..
~ Motivation is what gets you started. Habit is what keeps you going.
Еще очень удобная старничка для практической разработки:
http://www.exampledepot.com/
Можно потусоваться по всей jdk и найти пример или несколько по каждой библиотеке.
С ходу ответить не смог, пришлось попытаться разобратьсяСообщение от Ull9
.
Именно такие вопросы стимулируют к изучению чего-либо.
Наверное, речь идёт о чём-то, похожем на предикаты. Это функция или объект-функция, которая возвращает bool. Используя предикаты, можно определять "правила" по которым объекты сравниваются (считаются эквивалентными). При этом объекты могут быть не равны (с точки зрения ==).
Можно определить предикат, к примеру, для строк, который возвращает true, когда у строк неодинаковое количество символов.
В таком случае "абв" и "абв" будут не эквивалентны, но равны.
В то же время "абв" и "бвгде" будут эквивалентны, но не равны.
Это можно использовать, например, в стандартных алгоритмах
find_if(LB, LE, my_eq("абв"));
таким образом,
Для непосредственной проверки на равенство объектов, используем, к примеру, перегрузку ==.
Для проверки на эквивалентность, задаём предикат, который может реализовываться совсем не так как ==. Используем для совмещения своих классов с STL. (например, для поиска в двух последовательностях элементов, эквивалентных по некому заданному признаку; определяя свой предикат для ассоциативных последовательностей, и тд.)
Последний раз редактировалось Яр; 13.12.2006 в 21:45.
~ Motivation is what gets you started. Habit is what keeps you going.
ну.. так кто же ответит,
что такое еквивалентность, чем она отличается от равенства? зачем и где что применяется?
Ull9,
мой ответ выше,
~ Motivation is what gets you started. Habit is what keeps you going.
правильно, но теперь последнее
допустим у тебя есть некий предикат, как через него определяется эквивалентность?
если я правильно понял
допустим, предикат это predicate
наверное, так:
if ( predicate(a,b) && predicate(b,a) )
~ Motivation is what gets you started. Habit is what keeps you going.
ок
если существует предикат
p(const T&,const &T), то
два элемента x и y считаются эквивалентными если
!p(x,y)&&!p(y,x)
и именно это условие используется для поиска в ассоциативном контейнере.
и не в коем случае не
operator==
Спасибо за дискуссию.
я ушёл спать, завтра рано вставать\
~ Motivation is what gets you started. Habit is what keeps you going.
Можно ли с помощью MFC использовать новый вид элементов управления?
Использование темы ХР
ну, так не надо. По многим вопросам я хожу в форум codeguru.com. Зачастую попадаются весьма дельные ответы.Сообщение от pavlentus
Дома реально выучить все.Сообщение от Suicide
Лучше всего найти хостинг, который это поддерживает
и сделать любой сайт, например, со своим резуюме.
Работодателю просто говоришь: "А вот мой сайт" и показываешь ссылку в интернет.
Впрочем, работодатель обычно не дурак, сам узнает:
на собеседовании обязан присудсвтовать специалист,
способный оценить уровень знаний кандидата.
Исключение - маленькие не софтверные фирмы.
Как сделать XP-интерфейс в программе.Сообщение от THRESHE
A: (SUnteXx & Andruishka)
Оригинальная ссылка: нету
Написанный ниже текст предназначен только для Windows XP (и ее продолжений)
Самый простой вариант - это написать манифест, позволяющий Windows XP на стадии загрузки программы подключить нужную версию библиотеки разделяемых элементов (common controls), и занести его в ресурсы.
Q: Что такое манифест?
A: Манифест(manifest) - это текст на языке XML, описывающий нашу программу и библиотеки, необходимые для ее работы. В данном случае мы рассматриваем манифест для подключения шестой библиотеки common controls, включенной в состав Windows XP.
Лирическое отступление
Здесь нужно сказать, почему для подключения этой самой библиотеки в Windows XP нужно предпринимать какие-либо действия. Ведь для подключения этой же библиотеки в предыдущих версиях Windows никаких усилий не требовалось: достаточно подключить в проект библиотеку comctl32.lib и инициализировать ее с помощью функции InitCommonControls(), прописанной в commctrl.h
Дело в том, что в Windows XP существует две разные библиотеки common controls: одна "старая", версии 5.80, которая входит в поставку Internet Explorer 5.5 и которая может быть установлена на любую версию Windows, и "новая" версия - 6.0, которая и обеспечивает XP-интерфейс, т.е. поддержку визуальных стилей (visual themes)
Вы можете спросить, а почему бы этим странным людям из Microsoft просто не заменить бы "старую" версию на "новую"?
Дело в том, что до выхода Windows XP часть оконных классов - так называемые базовые классы окон - кнопки, статики (static text), поля ввода (editbox), скроллбары, списки и комбобоксы - хранилась в основной библиотеке, отвечающей за элементы пользовательского интерфейса - user.exe (Да, да, именно user.exe, а не user32.dll) Теперь же, все они "переехали" (нет, только новые версии - совместимость, понимаете ли) в библиотеку comctl32.dll
Из-за этого "старая" библиотека оставлена на своем прежнем месте, а новая засунута немножко дальше. И чтобы извлечь именно новую версию и нужен манифест.
Формат манифеста
Манифест лучше всего создавать как внешний файл. Назвать его можно как угодно, к примеру "data.bin". Создав файл с таким именем, запишите в него следующий текст:
Лирическое отступлениеКод:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="5.1.0.0" processorArchitecture="x86" name="Author.Program_Name" type="win32" /> <description>Program Description</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly>
Текст приведенный на этой странице можно копировать прямо из FAQ в какой-нибудь текстовый редактор, поддерживающий сохранение в текстовом формате, например в notepad.
Написали? Да у вас успехи в программировании! Теперь измените имя программы в 6-ой строке name="..." (не используйте пробелов, рекомендуется форма "Author.ProgramName" и описание программы в 9-ой между тэгами и (тут уже можно вставлять пробелы).
Подключение манифеста к приложениям.
Вообще, подключать манифест можно как через ресурсы приложения, так и используя внешний манифест. Внешний манифест подключается путем создания внешнего файла с именем типа "application.exe.manifest", где "application.exe" - имя исполняемого модуля вашей программы. Он помещается в одну папку с исполняемым модулем. Также можно использовать две версии манифеста: в виде ресурсов и в виде внешнего файла. В этом случае преимущество имеет дисковая версия манифеста.
Манифест может быть записан в ресурсы приложения (в новых SDK есть описание ресурса с именем RT_MANIFEST, именно так его обозвали в Visual Studio .NET. Для использования манифеста в Visual Studio 6.0 и во всех остальных системах нужно записывать манифест в ресурс с номером 24 (именно с номером, а не с именем "24")
Подключение манифеста к исполняемым модулям.
Данный параграф относится к большинству случаев создания XP-интерфейса. Он распространяется на приложения Windows и показывает, как подключить манифест, используя ресурс манифеста.
Лезем в ресурсы приложения (если кто не знает, никогда не писал программы под Windows или не использовал в них ресурсы - то это такой файл с расширением *.RC) и пишем в файл ресурсов следующую строку:
1 24 MOVEABLE PURE "data.bin"
А теперь собираем приложение и наслаждаемся новым интерфейсом программы.
Q: Упс... прога выдает "ошибку" и не запускается... Что делать?
A: (SUnteXx) В моем случае надо было добавить в опции линковщика ( Project -> Settings -> Link -> Object/Library Modules ) вот эту библитотеку: comctl32.lib. Если и это не помогло, то в самом начале программы вызываем функцию InitCommonControls (без параметров) которая прописана commctrl.h
A: (Anduishka) А в моем случае надо было переписать сам файл манифеста. Я выкинул из него все символы перевода строки. Поэтому, я рекомендую писать файл манифеста в одну строку.
Подключение манифеста к динамическим библиотекам, используемым как In-Process сервер.
Этот способ был использован для создания XP-интерфейса в библиотеке расширения Проводника. Нужно было создать дополнительную страничку свойств файла. В этом случае описанный выше способ не срабатывает. Простое подключение манифеста в ресурсы библиотеки тоже не подходит. В этом случае необходима модификация кода библиотеки.
Для подключения манифеста в DLL сделать нужно следующее:
Добавить в файл ресурсов следующую строку
2 24 MOVEABLE PURE "data.bin"
то есть, нужно подключить манифест с идентификатором ресурса ID=2. Далее, надо либо сделать определение ISOLATION_AWARE_ENABLED в главном файле библиотеки, но до подключения к нему файла "windows.h" , то есть, после модификации фрагмент кода программы будет выглядеть так :
#define ISOLATION_AWARE_ENABLED
#define "windows.h"
Однако, при использовании MFC, файл "windows.h" подключается где-то глубоко в недрах библиотеки, поэтому определение можно сделать в опциях компилятора (Project -> Settings -> C/C++ -> Preprocessor definitions)
Теперь, компилируем программу, используя новую версию SDK (у меня стоит версия SDK от июля 2001), так как в старой версии, поставляемой, скажем, с Visual Studio 6.0, определение ISOLATION_AWARE_ENABLED отсутствует. Да, и еще: для использования этого определения надо установить _WIN32_WINNT в 0x501, т.е. включить поддержку Windows XP. Строка, описывающая эту директиву должна выглядеть так:
#define _WIN32_WINNT 0x501
Подключение манифеста к приложениям, используемым как расширения Панели Управления.
На расширения панели управления распространяются те же правила, что и на обычные приложения. Однако, манифест в случае его размещения во внешнем файле будет иметь имя "application.cpl.manifest", а при размещении в ресурсах приложения, ему следует присвоить ID=123.
Пасиба за ответ, но я уже 2 недели как разобрался с манифестами (почитал на http://www.go4expert.com/forums/showthread.php?t=754 )![]()
Отдам книги по программированию, список тут
Просто выкинуть рука не поднимается, может, кому-нибудь нужно.
Если никто не заберет за пару недель, то выкину.
18.09.2003
08.04.2010
Ничего полезного для себя в списке не увидел... Жалко книжечки, может в библиотеке какой-то возьмут. У самого куча хлама, только художественного, но выбросить совесть не позволяет, может как нибудь перечитаю на старости лет.
Life is what happens while you are busy making other plans
Социальные закладки