इससे पहले कि मैं कतारNSMutableArray
का उपयोग कर, मैं जानना चाहता हूं कि कुछ और मानक उपलब्ध है या नहीं। मुझे ऐप्पल दस्तावेज़ों में कुछ भी दिखाई नहीं देता है, लेकिन अगर मैं कहीं से लोगों का उपयोग कर रहा हूं तो कतार कार्यान्वयन नहीं है तो मुझे आश्चर्य होगा। जावा मुझे खराब कर देता है!क्या आईफोन के लिए कोई कतार/फीफो डेटा संरचना है?
उत्तर
NSMutableArray
पर आधारित एक कतार लागू करना काफी आसान है, यह शायद कोड की 50 पंक्तियों के नीचे है।
संपादित करें:
एक त्वरित गूगल खोज के साथ इस मिला:
@interface Queue:NSObject {
NSMutableArray* objects;
}
- (void)addObject:(id)object;
- (id)takeObject;
@end
@implementation Queue
- (id)init {
if ((self = [super init])) {
objects = [[NSMutableArray alloc] init];
}
return self;
}
- (void)dealloc {
[objects release];
[super dealloc];
}
- (void)addObject:(id)object {
[objects addObject:object];
}
- (id)takeObject {
id object = nil;
if ([objects count] > 0) {
object = [[[objects objectAtIndex:0] retain] autorelease];
[objects removeObjectAtIndex:0];
}
return object;
}
@end
कोको अपने आप में एक पंक्ति वर्ग नहीं है, और वहाँ एक मानक दर असल नहीं है, लेकिन वहाँ कई विकल्प हैं, एक जिनमें से आपकी आवश्यकताओं के अनुरूप सबसे अच्छा हो सकता है। this question देखें (और my answer)।
जैसा कि आपने कहा था, आप एनएसएमयूटेबलएरे का उपयोग करके अपना खुद का रोल कर सकते हैं। यदि आपको केवल एक त्वरित 'कतरनी कतार की आवश्यकता है (और प्रतिलिपि, एन्कोडिंग/डिकोडिंग, गणना, इत्यादि के बारे में चिंतित नहीं हैं) तो समाधान @ मैट सुझाव एक आसान दृष्टिकोण है। आपको adding queue methods to NSMutableArray
via a category पर भी विचार करना चाहिए, जिसमें यह अच्छा है कि आपकी "कतार" भी एक सरणी है (इसलिए आप इसे एनएसएआरएआर पैरामीटर के लिए पास कर सकते हैं), और आपको मुफ्त में सभी एनएस (म्यूटेबल) ऐरे कार्यक्षमता मिलती है।
यदि प्रदर्शन महत्वपूर्ण है, तो मैं पहले तत्व को हटाने के लिए आदर्श रूप से उपयुक्त संरचना का उपयोग करने की अनुशंसा करता हूं। मैंने इस कारण से अपने स्वयं के ढांचे के लिए CHCircularBufferQueue लिखा था। (दूसरों को कुछ समय बचाने की कोशिश नहीं कर रहा है, बस अपना खुद का सींग मारने की कोशिश नहीं कर रहा है।)
मै मैट ब्रिज कोड के आधार पर मैंने केवल डेक विधि वाली एक श्रेणी बनाई है।
@interface NSMutableArray (ShiftExtension)
// returns the first element of self and removes it
-(id)shift;
@end
@implementation NSMutableArray (ShiftExtension)
-(id)shift {
if([self count] < 1) return nil;
id obj = [[[self objectAtIndex:0] retain] autorelease];
[self removeObjectAtIndex:0];
return obj;
}
@end
आप सी ++ स्टैंडर्ड लाइब्रेरी से एसटीएल कतार उपयोग कर सकते हैं।
STL priority queue देखें। इसके लिए कोड की शून्य रेखाओं की आवश्यकता होती है और यह पोर्टेबल है! आप और अधिक क्या चाह सकते थे?
धागा सुरक्षा;) – Michael
आप एनएसएआरएआरई की अंतिम ऑब्जेक्ट विधि का उपयोग कर सकते हैं। यहाँ एक अपरीक्षित उदाहरण है:
Queue.h
#import <Foundation/Foundation.h>
@interface Queue : NSObject
-(void)enqueue:(id)object;
-(id)dequeue;
@end
Queue.m
#import "Queue.h"
@interface Queue()
@property(nonatomic, strong) NSMutableArray *backingArray;
@end
@implementation Queue
-(id)init {
self = [super init];
if (self) {
self.backingArray = [NSMutableArray array];
}
return self;
}
-(void)enqueue:(id<NSObject>)object {
[self.backingArray addObject:object];
}
-(id)dequeue {
id object = [self.backingArray lastObject];
[self.backingArray removeObject:object];
return object;
}
@end
- 1. वृक्ष डेटा संरचना के लिए डेटाबेस संरचना
- 2. पूल कंटेनर के लिए इष्टतम डेटा संरचना क्या है?
- 3. क्या कोई बिडरेक्शनल मल्टीमैप लगातार डेटा संरचना है?
- 4. बहुआयामी डेटा के लिए सर्वोत्तम डेटा संरचना?
- 5. उपयोग करने के लिए डेटा संरचना क्या है?
- 6. पायथन सूची के लिए अंतर्निहित डेटा संरचना क्या है?
- 7. क्या इस डेटा संरचना के लिए औपचारिकता है?
- 8. क्या डीएजी के लिए कोई डेटा संरचना है जो कुशल संपादन का समर्थन करती है?
- 9. इस डेटा संरचना में क्या गड़बड़ है?
- 10. हीप डेटा संरचना का उपयोग क्या है?
- 11. खेलों के लिए स्थानिक डेटा संरचना
- 12. एक यादृच्छिक दुनिया के लिए डेटा संरचना
- 13. निर्देशिका संरचना के लिए उपयोग की जाने वाली डेटा संरचना?
- 14. खेलों में स्तरों के लिए डेटा संरचना
- 15. क्या नेट में "सेट" डेटा संरचना है?
- 16. क्या जावा में "LinkedConcurrentHashMap" डेटा संरचना है?
- 17. सबस्ट्रिंग खोज के लिए कुशल डेटा संरचना?
- 18. लोड पासा के लिए डेटा संरचना?
- 19. स्वत: पूर्णता के लिए डेटा संरचना
- 20. त्वरित समय अंतराल के लिए डेटा संरचना
- 21. यूनिट रूपांतरण के लिए अच्छा डेटा संरचना?
- 22. डेटा संरचना
- 23. मैट्रिक्स के लिए जावा डेटा संरचना?
- 24. क्या आईफोन के लिए कोई पेड़ नियंत्रण है?
- 25. क्या आईफोन के लिए कोई ज़िप डिकंप्रेशन है?
- 26. क्या आईफोन ऑडियो ऐप्स के लिए कोई ऑडियो विज्ञापन है?
- 27. क्या आईफोन के लिए कोई मूल वाईएएमएल लाइब्रेरी है?
- 28. संरचना - इसके लिए क्या है?
- 29. कुशल रेट्रैसिंग के लिए डेटा संरचना/दृष्टिकोण
- 30. समय श्रृंखला डेटा के लिए सर्वश्रेष्ठ डेटा संरचना
+1 मैं कोड एक बालक स्वरूपण, और -takeObject विधि साफ। –
अपने डेलोक पर एक [ऑब्जेक्ट रिलीज] जोड़ें, मैं आपको एक +1 – slf
दूंगा एक बेहतर कार्यान्वयन एक लिंक की गई सूची होगी। एक लिंक्ड सूची के साथ आप प्रत्येक ऑपरेशन को ओ (1) में बिताए गए समय को अनुकूलित कर सकते हैं। एनएसएमयूटेबलएरे के साथ आपके पास प्रत्येक टेकऑब्जेक्ट के लिए ओ (एन) ऑपरेशन होता है (removeObjectAtIndex सभी तत्वों को नीचे स्थानांतरित कर देगा)। – George