initWithCapacity

12 篇文章 0 订阅
9 篇文章 0 订阅
1, initWithCapacity : 10  并不代表里面的object数量不能大于10.也可以大于10. 
2,init是在告诉程序,“我不知道要放多少object,暂且帮我初始化”。 
3,如果你知道大概要放多少东西,那么最好用initWithCapacity,这个会提高程序内存运用效率。
4,如果你初始化了NSMutableDictionary,并且很长时间不会用到,建议用initWithCapacity:0。
其它的如NSMutableArray,也是这个道理。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用 Objective-C 实现的循环队列示例代码: ``` @interface CircularQueue : NSObject - (instancetype)initWithCapacity:(NSUInteger)capacity; - (BOOL)isEmpty; - (BOOL)isFull; - (NSUInteger)size; - (void)enqueue:(id)object; - (id)dequeue; - (id)front; - (id)rear; @end @implementation CircularQueue { NSUInteger _capacity; NSUInteger _head; NSUInteger _tail; NSMutableArray *_data; } - (instancetype)initWithCapacity:(NSUInteger)capacity { self = [super init]; if (self) { _capacity = capacity; _head = 0; _tail = 0; _data = [NSMutableArray arrayWithCapacity:capacity]; } return self; } - (BOOL)isEmpty { return _head == _tail; } - (BOOL)isFull { return (_tail + 1) % _capacity == _head; } - (NSUInteger)size { return (_tail - _head + _capacity) % _capacity; } - (void)enqueue:(id)object { if ([self isFull]) { NSLog(@"Queue is full"); return; } [_data addObject:object]; _tail = (_tail + 1) % _capacity; } - (id)dequeue { if ([self isEmpty]) { NSLog(@"Queue is empty"); return nil; } id object = [_data objectAtIndex:_head]; [_data removeObjectAtIndex:_head]; _tail = (_tail - 1 + _capacity) % _capacity; return object; } - (id)front { if ([self isEmpty]) { NSLog(@"Queue is empty"); return nil; } return [_data objectAtIndex:_head]; } - (id)rear { if ([self isEmpty]) { NSLog(@"Queue is empty"); return nil; } return [_data objectAtIndex:_tail - 1]; } @end ``` 使用示例: ``` CircularQueue *queue = [[CircularQueue alloc] initWithCapacity:5]; [queue enqueue:@1]; [queue enqueue:@2]; [queue enqueue:@3]; NSLog(@"%@", [queue front]); // Output: 1 NSLog(@"%@", [queue rear]); // Output: 3 [queue dequeue]; NSLog(@"%@", [queue front]); // Output: 2 NSLog(@"%@", [queue rear]); // Output: 3 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值