Я пытаюсь создать объект управления URL-адресом, используя boost::multi_index. Он имеет 2 индекса, один индексирует позицию каждого элемента пути и один индексирует ключ для поиска этого элемента.
class InternalPath
{
public:
struct PathItem
{
int Position;
std::string Key;
std::string Path;
};
typedef boost::multi_index_container<
PathItem,
boost::multi_index::indexed_by<
boost::multi_index::ordered_unique<boost::multi_index::member<PathItem,int,&PathItem::Position>>,
boost::multi_index::ordered_unique<boost::multi_index::member<PathItem,std::string,&PathItem::Key>>
>
> PathContainer;
private:
PathContainer path_;
};
Однако есть проблема, что не все предметы имеют свой ключ. Большинство элементов будут состоять только из позиции и пути. Я хочу, чтобы ключ был уникальным. Теперь проблема возникнет, когда я вставлю более одного неключевого элемента.
Можно ли разрешить ключу с пустой строкой иметь более одного элемента в контейнере. Если нет, что я должен сделать, чтобы преодолеть эту проблему?