нет не так,
скажу, что ответ тебе покажется парадоксальным и нелогичным,
но это только на первый взгляд, если подумаешь дальше то согласишся что он очень логичен.
подождем, может ребята ответят.
кстати, это базовый принцип STL.
Вид для печати
нет не так,
скажу, что ответ тебе покажется парадоксальным и нелогичным,
но это только на первый взгляд, если подумаешь дальше то согласишся что он очень логичен.
подождем, может ребята ответят.
кстати, это базовый принцип STL.
все пошел пиво пить.
мля, я в мухине уже полтора года, а все никак немогу все пиво перепробовать.
Очень классная книга для любителей JAVA. В ней есть почти все и качественным языком описано.
[url]http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764568744.html[/url]
[QUOTE=pavlentus]Очень классная книга для любителей JAVA. В ней есть почти все и качественным языком описано.
[url]http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764568744.html[/url][/QUOTE]
Ivor Horton пишет довольно понятным языком. :)
но конкретно эту книгу не читал..
Еще очень удобная старничка для практической разработки:
[url]http://www.exampledepot.com/[/url]
Можно потусоваться по всей jdk и найти пример или несколько по каждой библиотеке.
[QUOTE=Ull9]
подождем, может ребята ответят.
кстати, это базовый принцип STL.[/QUOTE]
С ходу ответить не смог, пришлось попытаться разобраться :).
Именно такие вопросы стимулируют к изучению чего-либо.
Наверное, речь идёт о чём-то, похожем на предикаты. Это функция или объект-функция, которая возвращает bool. Используя предикаты, можно определять "правила" по которым объекты сравниваются (считаются эквивалентными). При этом объекты могут быть не равны (с точки зрения ==).
Можно определить предикат, к примеру, для строк, который возвращает true, когда у строк неодинаковое количество символов.
В таком случае "абв" и "абв" будут [I]не эквивалентны[/I], но [I]равны[/I].
В то же время "абв" и "бвгде" будут [I]эквивалентны[/I], но [I]не равны[/I].
Это можно использовать, например, в стандартных алгоритмах
find_if(LB, LE, my_eq("абв"));
[I]таким образом,[/I]
Для непосредственной проверки на равенство объектов, используем, к примеру, перегрузку ==.
Для проверки на эквивалентность, задаём предикат, который может реализовываться совсем не так как ==. Используем для совмещения своих классов с STL. (например, для поиска в двух последовательностях элементов, эквивалентных по некому заданному признаку; определяя свой предикат для ассоциативных последовательностей, и тд.)
ну.. так кто же ответит,
что такое еквивалентность, чем она отличается от равенства? зачем и где что применяется?
[B]Ull9[/B],
мой ответ выше,
правильно, но теперь последнее
допустим у тебя есть некий предикат, как через него определяется эквивалентность?
если я правильно понял
допустим, предикат это predicate
наверное, так:
if ( predicate(a,b) && predicate(b,a) )
ок
если существует предикат
p(const T&,const &T), то
два элемента x и y считаются эквивалентными если
!p(x,y)&&!p(y,x)
и именно это условие используется для поиска в ассоциативном контейнере.
и не в коем случае не
operator==
Спасибо за дискуссию :).
я ушёл спать, завтра рано вставать\
Можно ли с помощью MFC использовать новый вид элементов управления?
Использование темы ХР
[QUOTE=pavlentus]Пока сам себе не поможешь никто тебе не поможет :)[/QUOTE]
ну, так не надо. По многим вопросам я хожу в форум codeguru.com. Зачастую попадаются весьма дельные ответы.
[QUOTE=Suicide]насколько реально выучить дома java ajax ?
и как доказать работодателю что ты это знаешь без диплома[/QUOTE]
Дома реально выучить все.
Лучше всего найти хостинг, который это поддерживает
и сделать любой сайт, например, со своим резуюме.
Работодателю просто говоришь: "А вот мой сайт" и показываешь ссылку в интернет.
Впрочем, работодатель обычно не дурак, сам узнает:
на собеседовании обязан присудсвтовать специалист,
способный оценить уровень знаний кандидата.
Исключение - маленькие не софтверные фирмы.
[QUOTE=THRESHE]Можно ли с помощью MFC использовать новый вид элементов управления?
Использование темы ХР[/QUOTE]
Как сделать XP-интерфейс в программе.
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". Создав файл с таким именем, запишите в него следующий текст:
[CODE]<?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>[/CODE]
Лирическое отступление
Текст приведенный на этой странице можно копировать прямо из 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 недели как разобрался с манифестами (почитал на [URL="http://www.go4expert.com/forums/showthread.php?t=754"]http://www.go4expert.com/forums/showthread.php?t=754[/URL] ):)
Отдам книги по программированию, список [URL="https://forumodua.com/showthread.php?p=15077033#post15077033"]тут[/URL]
Просто выкинуть рука не поднимается, может, кому-нибудь нужно.
Если никто не заберет за пару недель, то выкину.
Ничего полезного для себя в списке не увидел... Жалко книжечки, может в библиотеке какой-то возьмут. У самого куча хлама, только художественного, но выбросить совесть не позволяет, может как нибудь перечитаю на старости лет.
[QUOTE=Ull9;735735]ну.. так кто же ответит,
что такое еквивалентность, чем она отличается от равенства? зачем и где что применяется?[/QUOTE]
эквивалентность в терминах STL тождественна такому выражению
!( a < b ) && !(b < a )