c - 使用链接列表并删除节点或使用数组并对字符串进行小计算以查看是否可以跳过元素是否更有效?

标签 c algorithm data-structures language-agnostic

我正在用 C 编写一个读取文件的程序。文件的每一行都是一个字符串,将对其进行计算。对特定字符串的计算结果可能意味着文件中后面的字符串不需要对它们进行任何计算。此外,如果字符串的反转按字母顺序出现在(当前的、未反转的)字符串之前,则不需要检查它。

我的问题是将每个字符串放入链表并在找到不需要检查的特定字符串后删除每个节点或使用数组并检查字符串的最后几个字符是否更好在前一个元素中跳过按字母顺序排列的字符串之后吗?无论哪种方式,列表或数组只需要迭代一次。

最佳答案

经验法则是,如果您处理的是小对象(< 32 字节),std::vector 对于大多数常规操作而言优于链表。

但对于较大的对象(例如 1K 字节),通常您需要考虑列表。

有一篇文章详细比较你可以查看,链接在这里

http://www.baptiste-wicht.com/2012/11/cpp-benchmark-vector-vs-list/3/

关于c - 使用链接列表并删除节点或使用数组并对字符串进行小计算以查看是否可以跳过元素是否更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19169468/

相关文章:

algorithm - 通过有效地找到最后使用的元素来保持缓存( map )小

c - 读取二进制文件 c

algorithm - t(n) 的运行时间 = t(n-2) + (n-2)²

arrays - 高效的数据结构,用于快速随机访问、搜索、插入和删除

Laravel 使用 redis 缓存构建队列对象

python - Numpy 在索引周围创建掩码数组的最快方法

c++ - 如何在 Linux 中使用 libudev 以编程方式列出 USB 大容量存储设备?

c - 在 Linux 上获取当前进程的环境变量

c - c中scanf函数的功能

algorithm - 如何为 BST 实现纯尾递归插入?