Программирование. Принципы и практика использования C++ Исправленное издание, стр. 296
// ассоциативного // массиваcout << "Intel is in the Dow\n";Перемещаться по ассоциативному массиву легко. Мы просто должны помнить, что ключ называется
firstsecondtypedef map<string,double>::const_iterator Dow_iterator;// записывает цену акции для каждой компании, входящей в индекс// Доу - Джонсаfor (Dow_iterator p = dow_price.begin(); p!=dow_price.end(); ++p) { const string& symbol = p–>first; // тикер cout << symbol << '\t' << p–>second << '\t' << dow_name[symbol] << '\n';}Мы можем даже выполнить некоторые вычисления, непосредственно используя ассоциативный контейнер. В частности, можем вычислить индекс, как в разделе 21.5.3. Мы должны извлечь цены акций и веса из соответствующих ассоциативных массивов и перемножить их. Можно без труда написать функцию, выполняющую эти вычисления с любыми двумя ассоциативными массивами
map<string,double>double weighted_value( const pair<string,double>& a, const pair<string,double>& b) // извлекает значения и перемножает { return a.second * b.second; }Теперь просто подставим эту функцию в обобщенную версию алгоритма
inner_product() и получим значение индекса.double dji_index = inner_product(dow_price.begin(), dow_price.end(), // все компании dow_weight.begin(), // их веса 0.0, // начальное значение plus<double>(), // сложение (обычное) weighted_value); // извлекает значение и веса, // а затем перемножает их
mapdowvectormapfind()mapПОПРОБУЙТЕ
Приведите этот пример в рабочее состояние. Затем добавьте несколько компаний по своему выбору и задайте их веса.
21.6.4. Алгоритм unordered_map()
vectorfind()

Реальная сложность поиска зависит от того, насколько быстро нам удастся найти искомые значения и какие затраты будут связаны с выполнением операции сравнения и итераций. Обычно следование за указателями (при поиске в контейнере map) несколько сложнее, чем инкрементация указателя (при поиске в контейнере vector с помощью алгоритма
find()
mapvectormapunordered_map