| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Stl пересечение map и vector |
| Автор: becks 21.2.2012, 12:24 | ||||||
| Добрый день. Есть
И есть просто сортированный вектор слов
Мне нужно получить пересечение этих множеств и сумму числовых идентификаторов этого пересечения. Т.е. простыми словами, если слово встречается и там, и там , то нужно к некоторому счетчику добавить числовой идентификатор этого слова. Знаю, что пересечение можно сделать так:
а потом у итогового контейнера считать сумму числовых идентификаторов. В общем, вопрос состоит в том, как это все дело можно сделать изящно, без велосипедов. Спасибо. |
| Автор: borisbn 21.2.2012, 12:41 |
это как ??? итератор map'а - pair< string, int > итератор vector'а - string как их можно сравнивать ? |
| Автор: borisbn 21.2.2012, 12:54 | ||
мне самому кажется не очень изящным, но как-то так можно
http://liveworkspace.org/code/fb3df2f1f53f04e1b1124696d526d169 |
| Автор: becks 21.2.2012, 13:00 |
| borisbn, спасибо, уже хоть что-то. Может еще кто-нибудь предложит варианты буду признателен. |
| Автор: borisbn 21.2.2012, 13:28 |
| becks, учти, что если слово из v будет отсутствовать в m, то оно туда добавится из-за |
| Автор: becks 21.2.2012, 13:37 | ||
Эмн... это не есть хорошо. Подскажите, как сделать чтобы не добавилось? |
| Автор: borisbn 21.2.2012, 13:49 | ||
|
| Автор: becks 21.2.2012, 13:53 |
| Спасибо. |
| Автор: azesmcar 21.2.2012, 14:25 | ||
Естественно вектор должен быть отсортирован по возрастанию. В качестве оптимизации можно написать собственный output итератор и в нем уже считать сумму. |
| Автор: becks 21.2.2012, 15:40 |
| Большое спасибо за ответы. В обоих примерах ругается на квадратные скобки в for_each(). Builder XE. [BCC32 Error] Categorizer.cpp(43): E2188 Expression syntax В чем может быть проблема? |
| Автор: borisbn 21.2.2012, 15:50 |
и тут вспоминается анекдот/байка: молодому бойцу дали задание: разобрать и почистить генератор. Читает он инструкцию: "Снимите крышку генератора". Ну, сказано - сделано, снимает. А она не поддаётся. Он и пласкогубцами и монтировкой поддеть пытался... Никак. В итоге взял зубило, молоток - сбил нахрен эту крышку. Читает инструкцию дальше: ", открутив предварительно 16 болтов" дебилдер не поддерживает новый стандарт, а эти скобки - это лямбды из нового стандарта. |
| Автор: azesmcar 21.2.2012, 16:03 | ||
Да тут в общем-то примитивный подсчет суммы. Это только пример, смотри как сделано и пиши свой код. |
| Автор: borisbn 21.2.2012, 16:04 | ||||
в пример azesmcar добавляешь
и меняешь for_each на
|