دفعة متعددة الفهرس: مفتاح المتجهات المركب والمؤشرات المهملة

StackOverflow https://stackoverflow.com/questions/1701022

  •  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> > العمل، وأعتقد حاوية أكثر تعقيدا كذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top