Einfügen in boost :: BIMAP mit der assoziativen Eigenschaftenzuordnung BOOST ::… fehlgeschlagen

Unter Bezugnahme auf meine zuvor gestellte Frage zu boost :: bimaps und boost associative property maps interfaceHierIch möchte Put and Get-Hilfsfunktionen für meine Bimap verwenden.

Mit Bezug auf einen Beispielcode angegebenHierIch habe versucht, Folgendes hinzuzufügen, und ich erhalte einen langen Kompilierungsfehler für die fehlgeschlagene Assertion ... Hier ist der Code:

#include <boost/bimap.hpp> 
#include <boost/property_map/property_map.hpp> 
#include <boost/bimap/property_map/set_support.hpp>
#include <iostream> 

using namespace boost; 

int main() 
{
  typedef int vertex_descriptor_t;
  typedef boost::bimaps::bimap< vertex_descriptor_t, size_t > vd_idx_bimap_t;
  typedef boost::associative_property_map<vd_idx_bimap_t::left_map>   asso_vd_idx_bimap_t;

  // define bimap
  vd_idx_bimap_t        my_bimap;
  asso_vd_idx_bimap_t   my_asso_bimap(my_bimap.left);

  typedef typename vd_idx_bimap_t::value_type value_type;    
  my_bimap.insert( value_type( 1, 100 ) );
  // print bimap
  for(auto t = my_bimap.left.begin(); t != my_bimap.left.end(); ++t)
      std::cout << t->first << " " << t->second <<  "\n";

  int z = 1;
  std::cout << "value = " << get ( my_bimap.left, z ) << std::endl;    // prints correctly value = 100


  // ERROR here . 
  boost::put( my_asso_bimap, 2, 19 );

 } 

Es gibt Fehler wie: (eine lange Liste. Aber ich habe gerade ein Snippet gesetzt)

  cannot convert âboost::bimaps::detail::non_mutable_data_unique_map_view_access<Derived, Tag, BimapType>::operator[](const CompatibleKey&)::BIMAP_STATIC_ERROR__OPERATOR_BRACKET_IS_NOT_SUPPORTED360::assert_arg<long unsigned int>()â (type âmpl_::failed************ (boost::bimaps::detai

Es gibt auch einen Fehler, der mir einen Fehler in Zeile 364 der Datei (property_map.hpp) in boost gibt

  put(const put_get_helper<Reference, PropertyMap>& pa, K k, const V& v)
 {
   static_cast<const PropertyMap&>(pa)[k] = v;
  }

Ich verstehe den Fehler, dass die assoziative Karte die Daten nicht ändern kann, da sie auf die linke Kartenansicht verweist. aber wie verwende ich put and get helfer funktionen?

Ich kann GET-Funktionen (my_bimap.left, z) verwenden, aber ich kann die PUT-Funktion nicht verwenden. Ich wollte assoziative Eigenschaftszuordnung für get- und put-Funktionen verwenden, um auf der tatsächlichen Bimap zu arbeiten, damit ich insert (value_type ()) nicht verwenden muss ...

Ich hoffe ich bin klar genug für mein Problem. Bitte vorschlagen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage