سؤال

في طلبي، وأنا بحاجة إلى سلاسل التجزئة خريطة رسم الخرائط لعدد كبير من الكائنات ثابتة. تبقى تعيينات ثابتة لمدة التطبيق. هل هناك طريقة سهلة لمرحلة ما قبل توليد تعيينات في وقت الترجمة بدلا من بنائه عنصر من عنصر عند بدء تشغيل التطبيق؟

هل كانت مفيدة؟

المحلول

وابحث عن gperf ، فإنه يقوم بإنشاء رمز لك من شأنها أن تجزئة تماما.

نصائح أخرى

وتحقق من وظيفة تجزئة الكمال Burtlebob ل. في تجربتي أنه أكثر مرونة من gperf. http://burtleburtle.net/bob/hash/perfect.html

هل يمكن كتابة مولد رمز بسيط هو أن تنبعث ملف رأس مع تعيينات، وتشغيل هذا كخطوة ما قبل البناء في عملية الإنشاء.

أنت تبحث عن دفعة. تعيين في map_list_of . كان يعمل لhashmaps جدا.

#include <boost/assign/list_of.hpp> // for 'map_list_of()'
#include <boost/assert.hpp> 
#include <map>
using namespace std;
using namespace boost::assign; // bring 'map_list_of()' into scope

{
    map<int,int> next = map_list_of(1,2)(2,3)(3,4)(4,5)(5,6);
    BOOST_ASSERT( next.size() == 5 );
    BOOST_ASSERT( next[ 1 ] == 2 );
    BOOST_ASSERT( next[ 5 ] == 6 );

    // or we can use 'list_of()' by specifying what type
    // the list consists of
    next = list_of< pair<int,int> >(6,7)(7,8)(8,9);
    BOOST_ASSERT( next.size() == 3 );
    BOOST_ASSERT( next[ 6 ] == 7 );
    BOOST_ASSERT( next[ 8 ] == 9 );  
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top