typedef boost::bimap<boost::bimaps::vector_of<int>, boost::bimaps::vector_of<float> > bimap_t;
bimap_t mp;
mp.left.insert(bimap_t::left_value_type(2, 2.0f));
Почему это не работает? и выдает ошибку компилятора insert()
Не может найти insert()
это занимает bimap_t::left_value_type
в качестве аргумента.
тем не мение boost::bimap<boost::bimaps::set_of<int>, boost::bimaps::vector_of<float> >
работает. Похоже, слева не может быть вектор. но как двунаправленный это не должно иметь значения
Я никогда не использовал Boost.Bimap раньше, но, просматривая документацию, кажется, что типы left
а также right
представления и, соответственно, функции-члены, которые вы можете использовать, зависят от коллекций, которые вы используете в качестве параметров шаблона. Ты можешь видеть Вот методы, которые вы можете использовать с представлением vector_of. Вы можете использовать:
mp.left.insert(mp.left.end(), bimap_t::left_value_type(2,2.0f));
mp.left.push_back(bimap_t::left_value_type(2,2.0f));
Вы также можете использовать:
mp.left.push_front(bimap_t::left_value_type(2,2.0f));
но это не рекомендуется по соображениям производительности.
PS: если вы используете bimap<boost::bimaps::set_of<int>, boost::bimaps::vector_of<float> >
ваш insert
будет работать с левым обзором, но не с правым.
Других решений пока нет …