Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Классы hashtable, idictionary и другие для Win32, Классы hashtable, idictionary и другие 
:(
    Опции темы
Lazin
Дата 23.6.2009, 14:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 8
Всего: 154



ты что, и на шарпе так пишешь? 
твой map map-ов и map vector-ов должны что-то означать, к примеру vector содержит список жильцов дома, а map - список домов, по их номерам, ну так кто тогда мешает написать

Код

struct House
{
    std::vector<std::string> owners;

    typedef std::vector<std::string>::iterator iterator;

    void add_owner(std::string name) { owners.push_back(name); }   
    ....
};

struct City
{
    std::map<int/*house number*/, House*> houses;

    void add_owner(int number, std::string name) 
   { 
        assert(house_exists(number));
        houses[number]->add_owner(name);
    }

    bool house_exists(int num) { return houses.find(num) != houses.end(); }
    ....
};

City bobruysk;
...
if (bobruysk.house_exists(3))
    bobruysk.add_owner(3, "Vasya");



вместо того, что-бы городить такое: std::map< int, std::vector<std::string> >...
и на шарпе это будет выглядеть не менее ужасно - Dictionary<int, List<String>> city;

Это сообщение отредактировал(а) Lazin - 23.6.2009, 14:18
PM MAIL Skype GTalk   Вверх
Killerman
Дата 23.6.2009, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



azesmcar 
Цитата

typedef std::map<int, std::map<int, int> > mmap;
mmap m;
m.insert( mmap::value_type(10, std::map<int, int>()) );


ну так я ж об этом написал. Но динамическая память всеравно выделятеся в mmap m, только она скрыта в реализации mmap (НЕЯНАЯ для пользователя).

А ЯВНАЯ, это когда открыто создаешь объект через new.


ну вектор векторов и меп мепов, или еще хуже мем мепов векторов часто нужно в задачах, к примеру синтаксического анализа, динамического построения таблиц, разпознавания и т.д.
Короче нада мне  smile 

А по поводу динамической памяти - я как раз за. Только вот сложно с ней в приложениях для win32.

Если б как то увязать win32 обрабоку оконных месседжей и NET классы. Но это похоже нереально.



PM MAIL   Вверх
azesmcar
Дата 23.6.2009, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 5
Всего: 211



Цитата(Killerman @  23.6.2009,  14:50 Найти цитируемый пост)
Короче нада мне  smile 

А мне надо миллион долларов и билет до Хельсинки.

Цитата(Killerman @  23.6.2009,  14:50 Найти цитируемый пост)
Если б как то увязать win32 обрабоку оконных месседжей и NET классы. Но это похоже нереально.

Пиши на C# unmanaged code.
PM   Вверх
Killerman
Дата 23.6.2009, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Lazin
Цитата

вместо того, что-бы городить такое: std::map< int, std::vector<std::string> >...
и на шарпе это будет выглядеть не менее ужасно - Dictionary<int, List<String>> city;


На шарпе оно токо в объявлении ужасно. А при работе потом очень даже.

Цитата

к примеру vector содержит список жильцов дома, а map - список домов, по их номерам, ну так кто тогда мешает написать


Ну оно то да, но только красивая обертка. И классы создавать новые. Хотя. может.

azesmcar 
Цитата

Пиши на C# unmanaged code. 

 smile  интересно. не слышал. Може оно еще генерит асм код напрямую??
PM MAIL   Вверх
azesmcar
Дата 23.6.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 5
Всего: 211



Цитата(Killerman @  23.6.2009,  15:15 Найти цитируемый пост)
 smile  интересно. не слышал. Може оно еще генерит асм код напрямую?? 

http://www.codeproject.com/KB/cs/unmanage.aspx
http://www.codeproject.com/KB/dotnet/managed_unmanaged.aspx

PM   Вверх
xvr
Дата 23.6.2009, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



В C++ динамическая память ГОРАЗДО хуже, чем в С# по той простой причине, что в C++ нет GC. Любая ошибка в new/delete приведет к утечке памяти или трудноуловимым ошибкам. В .net это проще - нужна память - выделил, не нужна - бросил как есть, система сама подберет  smile 
В stl контейнерах с динамической памятью проще - там слежение за ней берет на себя библиотека (stl), а значит ошибится здесь гораздо сложнее (хотя при большом желании можно  smile )
Если нужно работать с динамически создаваемыми контейнерами и/или объектами, можно применить boost::shared_ptr, но лучше проектировать систему так, что бы такой необходимости не возникало

PM MAIL   Вверх
Killerman
Дата 23.6.2009, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



а де это буст качнуть? и хелп на нево.
PM MAIL   Вверх
xvr
Дата 23.6.2009, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



www.boost.org Help на него в комплекте с ним

PM MAIL   Вверх
Killerman
Дата 24.6.2009, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



спасибо.
Кстати с map<> как то можно узнать значение в ячейке, без проматывания всего списка через итераторы?

ну там типа, какое значение в ячейке m[100].
PM MAIL   Вверх
azesmcar
Дата 24.6.2009, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 5
Всего: 211



Цитата(Killerman @  24.6.2009,  08:56 Найти цитируемый пост)
Кстати с map<> как то можно узнать значение в ячейке, без проматывания всего списка через итераторы?

ну там типа, какое значение в ячейке m[100]. 

Код

map<int, string> m;
map<int, string>::const_iterator it = m.find(100);
if (it != m.end())
   it->second ... //вот значение

PM   Вверх
Killerman
Дата 24.6.2009, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Такое я знаю.   smile 
Хотелось  ... = map[100]  smile 
PM MAIL   Вверх
azesmcar
Дата 24.6.2009, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 5
Всего: 211



Цитата(Killerman @  24.6.2009,  09:17 Найти цитируемый пост)
Хотелось  ... = map[100]  smile  

Так тоже можно, но так неправильно. 
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0541 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.