typedef pair<char,int> cipair;
cipair data[] = {cipair('a', 1), cipair('b', 2), cipair('c', 3)};
map<char,int> mymap;
mymap.insert(data, data + 3);
Как быстрее заполнить std::map ?
Но если есть отсортированный массив.
Есть ли хитрость для увеличения скорости заполнения std::map или сортированый список занесется без потери скорости?
А не проще тупо искать в вашем отсортированном массиве, если он статический, а полагаю так и есть, бинарным поиском?
http://www.cplusplus.com/reference/stl/map/insert/
сказано: Efficiency of this operation can be dramatically improved by providing the appropriate value in parameter position.
Правда, в примере не сказано про массив. Но вставка массива объектов типа pair одной командой осуществима. Возможно это даст какой-то выигрыш.
Можно сделать как-то так:
Код:
А можно сразу без инсерта конструктором.
Цитата: Kogrom
Вот тут:
http://www.cplusplus.com/reference/stl/map/insert/
сказано: Efficiency of this operation can be dramatically improved by providing the appropriate value in parameter position.
Правда, в примере не сказано про массив. Но вставка массива объектов типа pair одной командой осуществима. Возможно это даст какой-то выигрыш.
Можно сделать как-то так:
А можно сразу без инсерта конструктором.
http://www.cplusplus.com/reference/stl/map/insert/
сказано: Efficiency of this operation can be dramatically improved by providing the appropriate value in parameter position.
Правда, в примере не сказано про массив. Но вставка массива объектов типа pair одной командой осуществима. Возможно это даст какой-то выигрыш.
Можно сделать как-то так:
Код:
typedef pair<char,int> cipair;
cipair data[] = {cipair('a', 1), cipair('b', 2), cipair('c', 3)};
map<char,int> mymap;
mymap.insert(data, data + 3);
cipair data[] = {cipair('a', 1), cipair('b', 2), cipair('c', 3)};
map<char,int> mymap;
mymap.insert(data, data + 3);
А можно сразу без инсерта конструктором.
Спасибо!
существует контейнер:
map(pair<string, int>)
также существует файл со структурой:
слово1 <пробел> целое_число <перенос строки>
слово2 <пробел> целое_число <перенос строки> ... и т.д.
Вопрос: есть ли способ (отличный от insert или конструктора) чтобы сразу загрузить в контейнер map данные из файла (вроде того - знаем размер блока данных, создаем map нужного размера - и через указатель копируем данные...)
возможно следует изменить string на char[x]
ps: ощущение такое, что пишу чушь, потому что не вникал в суть и структуру контейнеров.
Поправьте меня пожалуйста.