Boost: доступ к bimap с помощью оператора []

В следующем коде:

typedef bimap< set_of< std::string >, list_of< int > > bm_type;
bm_type bm;

bm.left["one"] = 1; // "one" -> 1
bm.left["one"] = 2; // replaced: "one" -> 2
bm.right[2] = "two"; // Compile error

Как я могу избавиться от ошибки компиляции? Разве нельзя получить доступ к правильному виду с operator[]?

2

Решение

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

Этот код просто не имеет никакого смысла. Списки не иметь operator[] потому что вы должны выбрать, куда вставить элемент, если он создан. Поскольку списки не сортируются внутри (как карты), 2 может идти в начале списка, в конце списка, в середине списка или где-либо еще.

(Boost-х list_of имитирует семантику стандарта list.)

1

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