Re[2]: слияние контейнеров
От: cthutq00  
Дата: 17.04.06 15:40
Оценка:
Здравствуйте, _DAle_, Вы писали:

_DA>Я так понял, что не каждый с каждым, а сложить соответствующие элементы векторов.


C>>
C>>    std::transform (v1.begin(), v1.end(),
C>>            v2.begin(), v1.begin(),
C>>            std::plus<S>());

C>>

_DA>Ну вместо transform лучше использовать merge, мне кажется, в данном случае.

я впринципе и сделал изначально с transform, но мне не очень понравилось

_DA>Предлагаю завести map<T, int>, проитерироваться по списку, сбрасывая все в map, а потом построить новый list по полученному map'у. Если же enum никогда изменяться не будет (но вообще, лучше не делать таких предположений обычно), можно вместо map'a воспользоваться vector<int>.


ну во-первых то пример сверху довольно простой (был приведен для наглядности). и не совсем понят по чему
индексироваться в списке
во-вторых что произойдет с объектом если его помещать в map а там уже есть такой (неужели вызовется оператор +=)


_DA>Тут на самом деле не совсем понятно, что надо сделать. Предлагаю тоже самое, сначала забрасываем в map первый список, потом выборочно (проверяем, если такой элемент в map'е) забрасываем в map второй вместе с удалением забрасываемых элементов из самого списка.


что-то не совсем понятно как это сделать
также возникает сложность при модификации списка (т.к. итераторы становятся не действительными)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.