संरक्षित करने के लिए मैं शुरू में एक ही कुंजी के साथ कई मान संग्रहीत करने के लिए एक std::multimap
का उपयोग कर बाहर शुरू कर दिया है, लेकिन फिर मुझे पता चला कि यह एक ही कुंजी के साथ मूल्यों के बीच प्रविष्टि क्रम बनाए रखने के नहीं है। This answer का दावा है उसके boost::multi_index::multi_index_container
साथ किया जा सकता है, लेकिन कोई उदाहरण देता है। दस्तावेज़ों को देखते हुए, उस उपयोग के कोई उदाहरण नहीं हैं, और मैं इस बात का उपयोग करने के तरीके के बारे में सिर या पूंछ नहीं बना सकता। मैं कम उपयोग किए जाने वाले बूस्ट पुस्तकालयों से खराब दस्तावेज की अपेक्षा करने आया हूं, लेकिन यह केक लेता है। क्या कोई मुझे ट्यूटोरियल या उदाहरण में इंगित कर सकता है जो दिखाता है कि यह जिस तरह से मैं चाहता हूं, या शायद खुद को एक उदाहरण भी प्रदान करता हूं?बढ़ावा multi_index_container का उपयोग कर प्रविष्टि आदेश
उत्तर
आप दो सूचकांकों साथ boost::multi_index
का उपयोग करके इस लक्ष्य को हासिल कर सकते हैं: ordered_non_unique
और random_access
(जो प्रविष्टि आदेश में रखना होगा) (जो एक ही कुंजी के साथ मूल्यों की अनुमति देता है)।
struct some {
long key;
int data;
int more_data;
// etc.
};
typedef multi_index_container<
some,
indexed_by<
random_access<>, // keep insertion order
ordered_non_unique< member<some, long, &some::key> >
>
> some_mic_t;
इस उत्तर का समर्थन, बढ़ावा प्रलेखन से: ** रैंडम एक्सेस सूचकांक लगातार समय स्थितीय का उपयोग और यादृच्छिक अभिगम iterators के साथ मुक्त-आदेश दृश्यों रहे हैं। यादृच्छिक एक्सेस इंडेक्स में तत्व डिफ़ॉल्ट रूप से सम्मिलन के क्रम के अनुसार क्रमबद्ध होते हैं ** –
कैसे एक
map<int, vector<string> >
या
map<int, list<string> >
@Kirill के बारे में: अच्छा जवाब। मुझे संदेह है कि बूस्ट की random_access काफी धीमी हो सकती है, क्योंकि यह सभी कुंजियों को एक ही संगत संरचना में बनाए रखने के लिए सभी तारों को मजबूर कर देगी। जबकि प्रश्नकर्ता बस प्रत्येक कुंजी के मैप किए गए मानों के सेट के भीतर संरक्षित होने का आदेश चाहता है।
'random_access' एक अतिरिक्त अनुक्रमणिका है। आप खोज के लिए 'order_non_unique' का उपयोग करते हैं, फिर परिणामी सीमा के माध्यम से पुनरावृत्ति के लिए 'random_access' का उपयोग करते हैं। यह धीमा नहीं है। –
(मैंने mult_index को बहुत कुछ उपयोग किया है, लेकिन random_index नहीं है, इसलिए मैं इनमें से किसी के बारे में भी निश्चित नहीं हूं) @ किरील: दो अंक: @rmeador मूल्यों के बीच सम्मिलन आदेश को संरक्षित करने में सक्षम होना चाहता है एक ही कुंजी के साथ "। एक कुंजी को देखते हुए, पूरी यादृच्छिक अनुक्रमणिका को तुरंत प्राप्त करने के लिए कैसे उपयोग किया जा सकता है? मुझे संदेह है कि मैंने जो संरचना सुझाई है वह ऐसा करने का एकमात्र तरीका हो सकता है। और मैं मतलब है कि नए तत्व की प्रविष्टि, आवश्यकता से धीमी हो सकती है के रूप में पूरे यादृच्छिक सूचकांक पुराना हो चुका संभावित है। –
@Kirill:, स्पष्ट करने के लिए एक बार ordered_non_unique (अवर्गीकृत) मान एक भी कुंजी के लिए इसी की एक सीमा की पहचान की है, तुम कैसे तो (जल्दी) कर मूल्यों की है कि सेट सॉर्ट करने के लिए random_access का उपयोग करें? मूल्यों का यह सेट एक बड़े random_access अनुक्रमणिका में समान रूप से फैल सकता है। Random_access रेंज में इटरेटिंग कुंजी को क्रम में नहीं रखेगी। –
- 1. बढ़ावा देने का बिंदु :: multi_index_container :: अनुक्रमणिका <Tag> :: प्रकार?
- 2. प्रविष्टि आदेश
- 3. बढ़ावा :: थ्रेड निष्पादन आदेश
- 4. आदेश का उपयोग कर ड्रॉपडाउन सूची आदेश दिया?
- 5. रोलबैक रेपो आदेश का उपयोग कर?
- 6. बढ़ावा :: unordered_map है ... आदेश दिया गया?
- 7. बढ़ावा लैम्ब्डा का सही उपयोग
- 8. स्रोत आदेश का उपयोग
- 9. बेस 64 एन्कोड बढ़ावा का उपयोग कर फेंक अपवाद
- 10. एक सी ++ हैश मैप कि प्रविष्टि
- 11. का उपयोग को बढ़ावा देने :: iterator
- 12. का उपयोग को बढ़ावा देने :: आवंटित ::
- 13. बढ़ावा सी ++ पुस्तकालयों का उपयोग करें?
- 14. बढ़ावा :: संस्करण उपयोग
- 15. "आदेश द्वारा ... का उपयोग" PostgreSQL
- 16. स्काला (या जावा) में अनुकूली मैप्स प्रविष्टि आदेश
- 17. MySQL, प्रविष्टि आदेश द्वारा ऑर्डर, कोई सॉर्टिंग कॉलम
- 18. बढ़ावा :: program_options: बिना कोई आदेश निर्दिष्ट कैसे करें "-" या "-"
- 19. elasticsearch सेट तरह querystring का उपयोग कर आदेश
- 20. एक WPF का उपयोग कर दो आदेश पैरामीटर बाध्यकारी पासिंग
- 21. devenv.exe का उपयोग कर आदेश के लिए बहुत जल्दी
- 22. प्रविष्टि
- 23. org.eclipse.ui.menus का उपयोग कर ग्रहण पैकेज एक्सप्लोरर संदर्भ मेनू आइटम में उपमेनू प्रविष्टि कैसे जोड़ें?
- 24. मैं क्विक चेक का उपयोग कर उच्च-आदेश फ़ंक्शन का परीक्षण कैसे कर सकता हूं?
- 25. बढ़ावा :: टोकननाइज़र बनाम बढ़ावा :: विभाजन
- 26. घोषणा का उपयोग कर
- 27. बढ़ावा:
- 28. जहां ऑपरेशन का आदेश और जॉइन आदेश
- 29. का उपयोग को बढ़ावा देने :: numeric_cast <>
- 30. बढ़ावा लैम्ब्डा का उपयोग कैसे करें नई वस्तुओं
आप इस एक बहु नक्शा करने की आवश्यकता है? – doublep
हाँ, मैं करता हूं। मेरे पास एक ही कुंजी के साथ कई मान हैं। – rmeador