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.