Oct. 27th, 2014

vadimpanin: (Default)
Раньше при замене типа контейнера с листа, например, на map – приходилось менять весь клиентский код, так как менялась семантика использования итераторов (вместо просто значения - пара ключ-значение).
В C++11 можно сделать вот так:
auto list() const -> decltype( my_map | boost::adaptors::map_values ) {
    return my_map | boost::adaptors::map_values;
}
И отдать "наверх" тип, который позволяет итерировать только по значениям этого map (я понимаю что рубисты/дотнетчики на этом месте покрутят у виска, у них эти возможности давно уже есть, но для С++ это типа big deal).
Ссылка на тему: http://stackoverflow.com/questions/21408251/how-to-declare-boost-range-adaptor-e-g-map-values

Profile

vadimpanin: (Default)
vadimpanin

May 2015

S M T W T F S
      12
3456 7 89
1011 1213 1415 16
17181920 212223
24252627282930
31      

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 23rd, 2025 06:09 am
Powered by Dreamwidth Studios