objective-c - 尝试在 objective-c 程序中使用 std::list

标签 objective-c list stl

我试图在我的 objective-c 程序中使用 std::list 并遇到运行时问题。

我有(为简洁起见编辑)

 #import <list>

 ...

 @interface Foo {
    std::list<Bar *> *myList;
 }

 ...

 @implementation Foo

 -(void)loopList {

   myList = new std::list<Bar *>;

   for (std::list<Bar *>::iterator ii; ii != myList->end(); ++ii) 
   {
      // Do nothing here
   }
 }

一切都编译得很好,但我在执行 for 循环时得到了一个 EXC_BAD_ACCESS。我没有对内容做任何事情,只是循环遍历它们(目前)。

我会使用 NSMultableArray,但我需要在迭代时快速插入和删除元素,这是不可能的。另外,我想使用 STL 来解决速度问题。

我将我的文件设置为 sourcecode.cpp.objcpp。

提前致谢。

最佳答案

这一行:

for (std::list<Bar *>::iterator ii; ii != myList->end(); ++ii) 

需要成为:

for (std::list<Bar *>::iterator ii = myList->begin(); ii != myList->end(); ++ii) 

在您的版本中,ii 从未被赋值,因此它没有任何可迭代的内容。根据您发布的代码,原因尚不清楚,但正因为如此,您稍后会尝试取消引用无效的内存地址,这就是您生成异常 (EXC_BAD_ACCESS) 的原因。

关于objective-c - 尝试在 objective-c 程序中使用 std::list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2262498/

相关文章:

ios - super 初始化返回 nil

c++ - 继承自定义类的 std::vector::iterator?

c++ - 在声明为 'const_iterator' 的函数中迭代具有 'const' 的集合会导致错误

c++ - 是否需要清除 STL vector

ios - 向添加到 UIWindow 的 View 添加约束时,为什么我无法设置自动布局约束?

ios - 难以在 Xcode 中归档静态库(未找到)

iphone - 我如何让 navigationItem.titleView 位于左右栏按钮项的后面

c++ - 对同一对象同时使用 Map 和 List

python - 比较 Python 中的两个列表 A,B 找到 A 中对应于 B 中相同数字的所有元素

java - 从 map 列表列表中收集特定键的值 List<String,