دفعة متعددة الفهرس: مفتاح المتجهات المركب والمؤشرات المهملة
-
19-09-2019 - |
سؤال
كما تعلمت للتو في في سؤالي الآخر, ، يمكنني استخدام composite_key
للحصول على بنية، التي لديها std::vector
وعدد صحيح. الآن سؤالي هو: هل يمكنني استخدام هذا بطريقة أو بأخرى للعمل مع hashed_indecies؟
هنا مثال مشابه ل هذه:
struct unique_property
{
//the pair of int and std::vector<int> shall be unique
int my_int;
std::vector<int> my_vec;
};
typedef multi_index_container<
unique_property,
indexed_by<
hashed_unique< // indexed by my_int and every entry of my_vec
composite_key<
street_entry,
member<unique_property,int,&unique_property::my_int>,
member<unique_property,std::vector<int>,&unique_property::my_vec>
>
>,
random_access< >
>
> property_locator;
المشكلة هي (بالطبع) std::vector<int>
ليس هناك أي طعام مناسب. هل يمكنني وضع هذا الرمز في غلاف أنيق (أو شيء من هذا القبيل)، لإنتاج مفتاح التجزئة من كل دخول my_vec
كذلك؟
المحلول
استخدام مقتطف التعليمات البرمجية من اقتراحك هنا. وبعد يجب أن تعمل. لقد أضفت تعليقاتي هناك.
نصائح أخرى
إذا كنت تريد أن يكون ناقل الحزن، فيمكنك فقط كتابة hash<vector<int> >
وظيفة في namespace std
, ، مما يجعله التجزئة ولكن من فضلك (تلميح: قد تكون قادرا على الابتعاد عن التجزئة فقط العناصر القليلة الأولى في بعض التطبيقات). هذا يجب أن يجعل std::hash_set<vector<int> >
العمل، وأعتقد حاوية أكثر تعقيدا كذلك.