我正在尝试自学C++,而我一直使用的传统"新语言"练习之一是实现一些数据结构,如二叉树或链表.在Java中,这相对简单:我可以定义一些维护实例变量的类Node Object data,以便有人可以在列表或树的每个节点中存储任何类型的对象.(后来我使用泛型来修改它;这不是这个问题的内容.)
我找不到类似的,惯用的C++方式来存储"任何类型的对象".在C中,我使用void指针; 同样的事情适用于C++,很明显,但后来我碰到的时候我构建的一个实例问题std::string,并尝试将其保存到列表/树(一些关于一个无效的转换,从std::string&到void*).有这样的方式吗?C++是否具有Java的Object(或Objective-C的NSObject)的等价物?
奖金问题:如果没有,我需要继续使用无效指针,将"存储"的"正确"方式std::string是void*什么?我偶然发现了static_cast<char*>(str.c_str()),但这似乎有点冗长我正在努力做的事情.有没有更好的办法?
或者反过来?
我一直使用通用列表.但我偶尔也会听到有关IEnumerables的消息,我老实说它(今天)不知道它们是什么以及为什么我应该使用它们.所以,冒着在网上有东西永远更多地宣扬我的无知的风险,我谦卑地发布这个问题.
我在PLY中使用一个相当简单的解析器,我的一个规则采用以下形式:
def p_things(p):
'''
things : thing things
things : thing
'''
p[0] = [p[1]]
if len(p) == 3:
p[0] += p[2]
Run Code Online (Sandbox Code Playgroud)
输入文件通常是简单的things 列表,因此解析本身并不复杂.但是我的一些输入文件非常大(相当规律地超过100,000行,极端情况下超过1,000,000行).在分析中(通过cProfile和pstats),大部分运行时通过重复调用来占用p_things- 可能是,对things列表中的每个项目进行一次调用.
有没有办法减少这个时间,或者更有效的方法来构建这个规则?到目前为止我看到的大多数答案(以及我发现的规范编译器信息)已经将此方法列为构建可解析项目列表的普遍接受的方式,无论长度如何.
我正在开发一个应用程序,它将数据保存在外部MySQL服务器中,但使用Core Data在本地缓存它以获得更好的响应时间.基本上,我想做的是:
除了最后一步,我完成了所有这些工作.我无法弄清楚如何使NSFetchedResultsController更新其数据集.到目前为止,我已经尝试将项目直接添加到其NSManagedObjectContext:
[NSEntityDescription insertNewObjectForEntityForName:@"Entity"
inManagedObjectContext:[fetchedResultsController
managedObjectContext]];Run Code Online (Sandbox Code Playgroud)
我也尝试了Apple在他们的CoreDataBooks示例中所做的事情,并使用了单独的"添加"托管对象上下文和调用mergeChangesFromContextDidSaveNotification:.似乎都没有改变当前在我的获取结果控制器的托管对象上下文中的NSManagedObject*的集合.
我如何更新NSFetchedResultsController当前管理的对象集?
该日志文件说,调用该logging.disable(lvl)方法可以"暂时油门输出记录在整个申请下来,"但我无法找到的"暂时".举例来说,以下脚本:
import logging
logging.disable(logging.CRITICAL)
logging.warning("test")
# Something here
logging.warning("test")
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还没有找到能够Something here重新启用整个日志记录系统并允许第二个warning通过的日志系统.有反转disable()吗?
我可以使用没有iOS开发人员计划帐户的模拟器为iOS开发(我只是无法在设备上运行.)是否有类似的方式为Mac Developer Program工作?我想在注册付费帐户之前测试我的一些实用程序应用程序的沙盒兼容性(以及App Store分发).如果我的应用程序不起作用或者至少不容易修复,那么99美元就不值得了.
我可以启用哪些项目设置来强制执行沙盒操作?我希望代码签名不起作用.
在过去的几天里,我一直在问一个问题,那就是让自定义工具栏与iPhone键盘顶部对齐的应用程序.我正在使用Josh在这个问题中描述的方法; 基本上,我让视图控制器监听UIKeyboardWillShowNotification并根据需要添加工具栏.
视图控制器本身管理一个表视图,其单元格都包含UITextField.显示的键盘和工具栏正在编辑这些文本字段.我仍然遇到的唯一问题是:当键盘和工具栏出现在距离桌子大约一半的单元格时,它会滚动到键盘上方,但不会在工具栏上方.
单元格和文本字段仍可编辑,但大约一半的单元格隐藏在工具栏下.如果我消失工具栏(不要将其添加到通知响应器中),整个单元格将变为可见,但显然我将丢失工具栏提供的功能.
有没有办法更改文本字段滚动到的位置?我尝试过使用UITableView方法scrollToRowAtIndexPath:atScrollPosition:animated:,但是当切换到几个单元格时,它往往会产生奇怪的结果.
将表格视图单元格滚动到自定义键盘工具栏上方的可见位置的最佳方法是什么?
我正在开发一个大量使用Core Data的iPhone应用程序,主要用于类似数据库的功能(例如能够在获取请求上设置排序顺序或谓词).我将呈现我在各种UITableViewControllers中获取的所有数据.
我想知道的是,在使用NSFetchedResultsController处理请求成为一个好主意之前,我可以获取多少个对象.在Core Data文档中,它表示SQLite存储区认为"10,000个对象是一个相当小的数据集",但在NSFetchedResultsController的文档中,它提到了一次在内存中保留"数十个对象".
我主要处理多达50个对象的数据集,每个对象可能有十几个NSNumber和NSString实例,以及下一组对象的一对多关系(即对象A有20个实例) ,每个都与一组三十个(不同的)对象B实例具有多对多的关系,每个实例都是......).
这种情况是否适合使用NSFetchedResultsController,或者我可以使用简单的NSArray结果?我没有管理控制器细节的问题(获取UITableView索引路径的对象的便捷方法,将新对象添加回上下文等)我自己,我只是想知道内存使用情况每种方法.
我应该提到该应用程序将主要针对iPhone 3G(而不是S)和第一代iPod Touch用户,因此请记住这些平台的有限内存.
是否可以从iOS应用程序的任何位置"弹出"视图.
例如,我想要一个事件触发视图滑动(模态),并且事件可以在应用程序的任何屏幕上随时发生.
此外,我们希望这可以包含在其他项目中,并且希望他们不必对这些项目执行任何特殊操作(除了引用项目中的连线).
iphone ×4
core-data ×2
objective-c ×2
python ×2
xcode ×2
automation ×1
c# ×1
c++ ×1
caching ×1
cocoa-touch ×1
generics ×1
ienumerable ×1
ios ×1
linked-list ×1
list ×1
logging ×1
macos ×1
object ×1
optimization ×1
parsing ×1
ply ×1
pointers ×1
scroll ×1
uitableview ×1