动态数据结构(如链表)的意义是什么?
What is the significance of Dynamic data structure(like linked list)
一旦创建链表的程序关闭而不删除动态内存,我知道动态内存需要删除,那么我怎么能让它在重新打开程序后恢复工作,如果我不能恢复链表,那么链表的用途是什么
当你退出程序时所有都消失了。包括链表和非链表、数组、单独对象等。
如果你想要一些东西持久化,你必须保存它,然后加载它。像在文本编辑器中一样,使用load和save。
有完整的库来帮助解决这个问题,您可以从boost::serialization开始。
链表本身与数据持久化无关。
与其他数据结构相比,链表具有特定的性能特征。找到一个特定的元素可能需要多长时间是未知的,可能需要遍历整个列表(线性时间),但是插入和删除总是花费相同的小固定时间(常数时间)。您可能想要阅读有关STL容器的内容,因为它们内部具有类似的数据结构:在哪种情况下我使用特定的STL容器?
如果你想让数据在你的应用运行时间之后持续存在,你需要研究读/写文件、数据库、网络通信或任何可能满足你特定需求的持久机制。
链表的关键在于它是一种灵活的数据结构,供您的代码使用——它不像数组那样有固定的长度,因此您可以根据需要添加和删除项目。
人们谈论动态内存分配的原因是因为它的内存分配取决于程序的运行时行为,这可能会根据它读取的数据而改变。这与静态内存分配相反,静态内存分配对于每次运行的给定代码路径基本上是相同的,并且对于某些问题更难处理。然而,在某些嵌入式系统上,这是您唯一的选择,并且在某些情况下,在静态内存分配中工作也可以更快(动态分配往往有与之相关的速度损失)。
整个话题其实很复杂,经常让我头疼。
动态分配的内存不会在程序运行之间持续存在——操作系统会在程序关闭时清理所有内存——因此动态内存分配和数据持久性之间没有关系。你必须使用其他机制,通常存储在磁盘上的某个地方。在进程结束后,你无法取回内存,这就是现代多任务"保护内存"模型的本质,你无法访问甚至看不到属于其他进程的内存。
- C++中deque数据结构的大O是什么?
- 自定义数据结构的优点是什么?
- 用于筛子的最佳数据结构是什么(即一些被划掉的数字列表)?
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 在C++中将数据结构表示为字符串的首选方法是什么?
- 存储数据列表并自动分配给结构的最佳方法是什么
- 表示图像矩阵的理想数据结构是什么?
- 使用什么数据结构来存储基于游戏对象的二维单元地图?
- 存储大量会话的最有效数据结构是什么?
- 我应该使用什么数据结构来对数据库/表进行建模
- 如何维护城市道路数据?(我应该使用什么数据结构)
- 这是什么C++语言结构:#(即哈希)整数"path_to_header_or_cpp_file"<integer>?
- 在高性能计算中更好的做法是:将数据结构传递到一个函数或一组变量中
- 在 OpenMP 中使用共享数据结构而不是私有数据结构时的性能差异
- 您将使用什么数据结构来实现字典
- 什么数据结构可以用于在cpp中存储windows目录结构
- 什么数据结构可以在O(log n)时间内找到给定范围内的元素数
- 在C++中,使用什么数据结构来快速存储文本文件,该文件具有可变的行数和可变的子元素数
- 我应该使用什么数据结构来支持插入、删除和随机选择
- 在知道变量是什么数据类型之前如何声明它