Re: Вопрос про Dictionary<string, string> из C# и std::map из С+
От: Stanislav V. Zudin Россия  
Дата: 26.08.16 07:18
Оценка: 8 (1) +1
Здравствуйте, Varavva, Вы писали:

V>То, разумеется, все в алфавитном порядке. Почему Dictionary не сортирует? Или он сортирует? ТОгда почему в файле не отсортировано?


Потому что Dictionary — хеш таблица, а map — дерево.
замени map на unordered_map.
_____________________
С уважением,
Stanislav V. Zudin
Вопрос про Dictionary<string, string> из C# и std::map из С+
От: Varavva  
Дата: 26.08.16 07:11
Оценка:
Необходимо перевести небольшую функцию из C# в C++

В коде С# есть переменная

Dictionary<string, string> rules

Этот словарь как-то заполняется, а потом выводится в файл через

foreach (string ruleId in rules.Keys)

И в файле все это располагается не в алфавитном порядке.

Если же я делаю std::map<std::string, std::string> и потом вывожу в файл через

for (std::map< std::string, std::string >::iterator ruleId = rules.begin(); ruleId != rules.end(); ++ruleId)


То, разумеется, все в алфавитном порядке. Почему Dictionary не сортирует? Или он сортирует? ТОгда почему в файле не отсортировано?
Отредактировано 26.08.2016 7:12 Varavva . Предыдущая версия .
Re[2]: Вопрос про Dictionary<string, string> из C# и std::map из С+
От: Varavva  
Дата: 26.08.16 07:31
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Потому что Dictionary — хеш таблица, а map — дерево.

SVZ>замени map на unordered_map.

А, ясно. Не знаю C# потому и лажанулся. Спасибо.
Re[3]: Вопрос про Dictionary<string, string> из C# и std::map из С+
От: Кодт Россия  
Дата: 26.08.16 09:13
Оценка:
Здравствуйте, Varavva, Вы писали:

V>А, ясно. Не знаю C# потому и лажанулся. Спасибо.


Ты ещё учти, что обходы хеш-таблиц могут отличаться между копий и даже от запуска к запуску приложения.
Особенно этим грешил MFC/ATL CMap.
Заполняешь таблицу, сериализуешь, десериализуешь, ой! Сериализуешь, десериализуешь, ой-наоборот!

Причина — разное количество корзин, разный порядок построения списков коллизий.
Перекуём баги на фичи!
Re: Вопрос про Dictionary<string, string> из C# и std::map из С+
От: _NN_ www.nemerleweb.com
Дата: 04.09.16 08:46
Оценка:
Здравствуйте, Varavva, Вы писали:

V>То, разумеется, все в алфавитном порядке. Почему Dictionary не сортирует? Или он сортирует? ТОгда почему в файле не отсортировано?

Сортирует SortedDictionary.
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.