Ho una domanda per quanto riguarda le opzioni peso mosca, data la definizione di seguito, sulla base di http://www.boost.org/doc/libs/1_40_0/libs/flyweight/test/test_basic.cppBoost.flyweight e Boost.MPL
typedef boost::flyweights::flyweight<
std::string,
boost::flyweights::tag<int>,
boost::flyweights::static_holder_class<boost::mpl::_1>,
boost::flyweights::hashed_factory_class<
boost::mpl::_1,
boost::mpl::_2,
boost::hash<boost::mpl::_2>,
std::equal_to<boost::mpl::_2>,
std::allocator<boost::mpl::_1>
>,
boost::flyweights::simple_locking,
boost::flyweights::refcounted
> StringFlyweight;
StringFlyweight test1("Hello World");
che valore ha boost::mpl::_1
e boost::mpl::_2
? Quando sono assegnati?
boost::mpl::_1
è probabilmente std::string
. boost::mpl::_2
dovrebbe essere size_t
? Se vero, come viene detratto? Non capisco come viene scelto key_type.
Ho letto http://www.boost.org/doc/libs/1_41_0/libs/flyweight/doc/tutorial/lambda_expressions.html ma è il mio primo contatto con Boost.MPL e non è sufficiente :)
quindi, key_type è determinato dal peso mosca. Ma come posso determinare il tipo e alla fine impostarne uno? È molto importante che la chiave sia un tipo integrale, non una stringa. – vlg789
Se si desidera specificare la chiave utilizzata per recuperare gli oggetti, è necessario utilizzare 'key_value' come argomento per 'flyweight '. Devi anche dire alla biblioteca come recuperare una chiave da un valore, usando un "key extractor", un functor che restituisce la chiave corrispondente al valore dato come argomento. Vedi un esempio il tutorial di Boost.Flyweight (http://www.boost.org/doc/libs/1_47_0/libs/flyweight/doc/tutorial/key_value.html). –