मैं std::pair<int, int>
के std::set
में बहुत सारे और बहुत सारे आवेषण कर रहा हूं, और मुझे लगता है कि यह अधिक समय ले रहा है। जब मैंने कोड लिखा था तो मुझे लगा कि मैं बाद में डालने के संकेत संकेतक फॉर्म का उपयोग कर देखना चाहूंगा यदि यह एक बाधा बन गया हो; अच्छा, अब यह प्रोफाइल है और यह एक बाधा है। तो मैं इटरेटर संकेत का उपयोग करना चाहता हूँ।std :: set :: insert, मैं कितना बुरा संकेत दे सकता हूं?
हालांकि, मैं हमेशा अपने जोड़ों को सम्मिलित करने के लिए एक अच्छी स्थिति नहीं जानता हूं। मैं आम तौर पर बैच में डालता हूं (इस मामले में एक बैच कुल इनपुट आकार के 0.01% के क्रम में है, डुप्लीकेट शामिल है), लेकिन जब बैच डाला जाता है, तो मुझे नहीं पता कि अगला व्यक्ति कहां चाहिए प्रारंभ। संकेत का उपयोग कैसे किया जाता है? क्या सुझाव दिया गया स्थिति से बाइनरी खोज की तरह कुछ करता है? एक बुरा संकेत का उपयोग करना कितना बुरा होगा, आमतौर पर?
मुझे जितना चाहें उतना लंबा? मुझे पता है 'ओ (एन) ',' ओ (लॉग एन) ', यहां तक कि' ओ (एन^2) '... लेकिन' ओ (मुझे पसंद है उससे अधिक) 'मेरी पाठ्य पुस्तक – sehe
में नहीं है ठीक है, चीजें शायद ही कभी 'ओ (लॉग एन)' सेकंड लेती हैं ... लेकिन ~ 200,000 आवेषण (डुप्लिकेट के साथ) करने में लगभग 4 सेकंड लगते हैं।यह उपयोगकर्ता के लिए एक उल्लेखनीय देरी है, और यदि मैं – carlpett
कर सकता हूं तो मैं इसे छोटा करना चाहता हूं यदि यह एक बाधा है तो आप 'unordered_set' का उपयोग करके बेंचमार्क कर सकते हैं। बूस्ट या एसटीएल अपने कंपाइलर के आधार पर। –