Objective c 目标NSC堆栈和NSC队列?

Objective c 目标NSC堆栈和NSC队列?,objective-c,nsmutablearray,stack,Objective C,Nsmutablearray,Stack,在Java中有一个很好的库类Java.util.Stack,它实现了push和pop方法。 目标C中是否有类似的内容 我只找到了可变数组。看起来很奇怪,我必须实现堆栈这样一个基本的东西,必须有类似“NSStack”、“NSQueue”和其他类似的东西。我有一个堆栈实现。它使用NSMutableArray来完成一些不太糟糕的工作。但是基础没有任何东西。 据我所知,SDK中没有堆栈和队列之类的东西。 这里有一个队列实现的例子。任何人都不应该忘记Objective-C提供了一个非常好的变体:Objec

在Java中有一个很好的库类Java.util.Stack,它实现了push和pop方法。 目标C中是否有类似的内容


我只找到了可变数组。看起来很奇怪,我必须实现堆栈这样一个基本的东西,必须有类似“NSStack”、“NSQueue”和其他类似的东西。

我有一个堆栈实现。它使用
NSMutableArray
来完成一些不太糟糕的工作。但是基础没有任何东西。

据我所知,SDK中没有堆栈和队列之类的东西。
这里有一个队列实现的例子。

任何人都不应该忘记Objective-C提供了一个非常好的变体:Objective-C++。C++标准库提供了您需要的数据结构,测试良好、调试、稳定,并且尽可能快。最好的是,它们可以完美地与ARC配合使用。最棒的是,你甚至可以选择
\uuuu弱
\uuu强
指针,如果你感觉到的话

看看

也就是说,
NSMutableArray
对于堆栈非常有效:
-addObject:
-lastObject
-removeLastObject
将以良好的性能很好地完成这项工作


C++可以是冗长的。极其冗长。但它也有一些优雅的地方和一些非常强大的结构。标准库的某些部分真的很出色,一旦掌握了外来语法,数据结构就成了珍珠。无论如何,它可以用几个typedef隐藏。

您(和我一样)可能会担心使用NSMutableArray的出列性能,因为在出列时,您必须删除NSMutableArray中的第一个对象,并且删除会导致数组中所有对象的移动。但是,根据我所做的测试,这是不必要的:对于包含100000个对象的NSMutableArray,通过连续删除第一个对象来删除所有对象比连续删除最后一个对象慢100毫秒。我还比较了使用一个NSMutableArray和使用两个NSMutableArray。虽然可以通过使用两个NSMutableArray(用作两个堆栈)来避免删除第一个对象,但双堆栈解决方案实际上速度较慢。

是的,也有可能重复!很高兴你发现它有用。基本上-您可能不需要队列或堆栈,只要使用
NSMutableArray
就可以了。不需要,但是一个关于如何使用objective-C.m文件中的有一个问题——C++类只能在.mm文件中可用,并且当我将m。m改为.mm时,XCODE 8编译器突然开始用我使用的一些头的链接错误来拼写垃圾邮件,例如“代码>未定义的符号x8664 64:”O.ObjcC.Case$$iPuLuToToTrfFFChanChans',引用自:BluetoothRfcommPort.o中的objc class ref因此,有时不能选择Obj-C++,除非我遗漏了什么。