
Le 15/05/12 12:09, Vicente J. Botet Escriba a écrit :
Hi,
I have a bimap
typedef bimap< multiset_of< tagged< Person*, consultant> >, multiset_of< tagged< Company*, client> >, with_info< tagged< ConsultancyContract*, contract> >
Consultancy;
initialized as follows
Consultancy consultancy; Person John("John"), Jane("Jane"); Company Dell("Dell"), HP("HP"); ConsultancyContract JohnContractD(10,1); ConsultancyContract JaneContractD(20, 2); ConsultancyContract JaneContractH(30, 3);
consultancy.insert(Consultancy::value_type(&Jane, &Dell, &JaneContractD)); consultancy.insert(Consultancy::value_type(&Jane, &HP, &JaneContractH));
and I want to remove only the specific association Jane<->Dell and so I'm using
consultancy.erase(Consultancy::value_type(&Jane, &Dell));
but then the resulting consultancy bimap is empty, while I expect the association Jane<->HP to be there yet.
If I add before erasing consultancy.insert(Consultancy::value_type(&John, &Dell, &JohnContractD));
and then consultancy.erase(Consultancy::value_type(&Jane, &Dell));
all the associations concerning Jane are removed.
What I'm doing wrong? How to erase a single association?
I have reached to get what I was locking for. I have added set_of_relation<> to the bimap definition typedef bimap< multiset_of< tagged< Person*, consultant> >, multiset_of< tagged< Company*, client> >, with_info< tagged< ConsultancyContract*, contract> > , multiset_of_relation<>
Consultancy;
Is there another way when the collection of relation is the default |left_based? |I find the default behavior a little bit surprising. Why provide a erase function requesting the value_type if only the left side is taken in account? | What is the rationale to have the default left_based? Space optimization? It works also with multiset_of_relation. I don't see a use case for this. When the user could want the same association to be several times? Could some one give me an example? Best, Vicente |