तेजी से गणना करते समय जब मैं सरणी में अंतिम वस्तु तक पहुंच गया हूं तो यह जानने का सबसे अच्छा तरीका क्या है? क्या int को बढ़ाने और फिर सरणी की लंबाई की तुलना करने से बेहतर तरीका है?उद्देश्य सी: फास्ट गणना का उपयोग करते समय अंतिम वस्तु?
उत्तर
आप एक सरणी के साथ शुरू कर रहे हैं पिछले तत्व बाहर निकलना (वहाँ ' इसके लिए एक विशिष्ट कॉल है) और इसके खिलाफ गणनाकर्ता में प्राप्त प्रत्येक तत्व की तुलना करें। की तरह कुछ:
id lastEl = [myArray lastObject];
for (id anEl in myArray)
{
if (anEl == lastEl)
..... // do the last thing
}
तुलना लागत काउंटर के साथ के रूप में ही है, लेकिन फिर तुम काउंटर या गलतियों कि सदा ही पैदा होती है जब आप काउंटर बढ़ाने के लिए भूल जाते हैं बढ़ाने की लागत नहीं है।
मुझे विश्वास नहीं है कि ऐसा करने का कोई भी (सरल) तरीका है - यह तेजी से गणना का उपयोग करने के व्यापार-बंदों में से एक है। इस प्रकार, जब आपको उस आइटम की अनुक्रमणिका के बारे में पता होना चाहिए जिस पर आप अनुमान लगा रहे हैं, तो आपको सुझाव देते हुए एक पूर्णांक बनाना होगा।
कहा कि, आप अब भी इस तथ्य से लाभ होगा कि आप नहीं है जब एक तेज प्रगणक का उपयोग कर, आदि
आमतौर पर, तेजी से गणन मतलब है कि आप एक काउंटर उपयोग नहीं कर रहे सीमा से बाहर जा सकते हैं ...
अन्य रूप के बिना है एक काउंटर है ...
NSEnumerator *enumerator = [objectSet objectEnumerator];
id setObject;
while ((setObject = [enumerator nextObject]) != nil)
{
...
}
यदि प्रदर्शन परीक्षण here उत्तरदायी है, तो तेज़ गणना और ब्लॉक गणना के बीच कोई अधिक प्रदर्शन अंतर नहीं है। या बीबीएम ने कहा here "ब्लॉक-आधारित गणना संग्रह वर्ग को मूल भंडारण प्रारूप के सबसे तेज़ ट्रैवर्सल के रूप में सामग्री को गणना करने की अनुमति देती है।"
तब मैं ब्लॉक गणना का उपयोग करने का सुझाव दूंगा ताकि आपको इंडेक्स और ऑब्जेक्ट मिल सके। समय, और आप तुलना कर सकते हैं।
तुम भी ब्लॉक के साथ गणना का उपयोग कर सकते हैं:
[myArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
BOOL isLastObject = idx == [myArray count]-1;
if (isLastObject){
//...
}
}];
क्या आप जानते हैं जो एक तरह से अपने सरणी शामिल हैं यह उचित वर्ग के साथ id
को बदलने के लिए बेहतर है वस्तुओं है।
- 1. सी # फास्ट हैश गणना
- 2. फास्ट एन-ग्राम गणना
- 3. उद्देश्य-सी
- 4. इटरेटर का उपयोग करते समय अंतिम तत्व कैसे निर्धारित करें?
- 5. उद्देश्य-सी: फास्ट फ़ज़ी खोज मिलान
- 6. सर्वश्रेष्ठ अभ्यास का उपयोग करते समय httplib2.Http() वस्तु
- 7. जावास्क्रिप्ट की गणना करते समय सीएसएस एनीमेशन का उपयोग
- 8. उद्देश्य-सी गणना, NS_ENUM और NS_OPTIONS
- 9. समय उद्देश्य-सी कोड
- 10. समय बीतने (उद्देश्य-सी)
- 11. उद्देश्य सी ++ में सी ++ का उपयोग?
- 12. पॉइंटर्स का उद्देश्य-सी उपयोग
- 13. जावा में अंतिम वस्तु
- 14. (ऐसा नहीं) संपत्ति का उपयोग करते समय मूर्खतापूर्ण उद्देश्य-सी विरासत समस्या - जीसीसी बग?
- 15. उद्देश्य सी प्रोटोकॉल उपयोग
- 16. का उपयोग करते समय @require_POST
- 17. उद्देश्य-सी
- 18. फास्ट सी ++ प्रतिनिधि
- 19. सूची का उपयोग करते समय अजीब अपवाद
- 20. उद्देश्य सी "प्रत्येक के लिए" (तेज गणना) - संग्रह का मूल्यांकन?
- 21. स्काला: साथी वस्तु उद्देश्य
- 22. हम उत्प्रेरक के संदर्भ वस्तु का उपयोग क्यों करते हैं? इसका उद्देश्य क्या है?
- 23. BOOST_FOREACH का उपयोग करते समय मैं वेक्टर में अंतिम तत्व का परीक्षण कैसे कर सकता हूं?
- 24. पायथन और रूबी में फास्ट सापेक्ष गणना
- 25. उद्देश्य-सी में गुणों का उपयोग कैसे करें?
- 26. फास्ट सिन/कॉस एक पूर्व गणना अनुवाद सरणी का उपयोग कर
- 27. दिनांक वस्तु अंतिम बार संशोधित
- 28. उद्देश्य-सी #import और विरासत का उपयोग
- 29. का उपयोग enum डेटाप्रकार उद्देश्य सी
- 30. उद्देश्य-सी में enum का उपयोग कर?
मैं इसके साथ सहमत हूं, लेकिन मेरा मानना है कि यह "lastObject" नहीं है "lastElement"। – slycrel
अब आप और मैं सहमत हूं! कॉल के लिए एसडीके दस्तावेज़ों की जांच न करने के लिए मुझे यही मिलता है। –
महान उत्तर और बस जो मैं खोज रहा था! –