boost :: bimap не принимает vector_of

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> > работает. Похоже, слева не может быть вектор. но как двунаправленный это не должно иметь значения

1

Решение

Я никогда не использовал 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 будет работать с левым обзором, но не с правым.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]