arrays - 什么时候在 Perl 中使用数组而不是散列更好?

标签 arrays perl hash

假设你有一个数组 @a = qw/ a b c d/;
和一个散列 %a = ('a' => 1, 'b' => 1, 'c' => 1, 'd' => 1);
是否存在创建数组版本比创建散列更好的情况(除了当您必须像这样遍历所有值时

for (@a){
    ....

在这种情况下,您必须使用 keys %a如果你使用哈希)?因为测试特定值是否在哈希中总是比在数组中更有效,对吗?

最佳答案


  • 数组由数字索引。
  • 散列由字符串键控。

  • 数组中存在直到最高索引的所有索引。
  • 哈希被稀疏索引。 (例如,“a”和“c”可以在没有“b”的情况下存在。)

  • 有许多紧急属性。主要是,

  • 数组可用于存储有序列表。
  • 以这种方式使用散列将是丑陋且低效的。

  • 除非它是最高索引元素,否则无法从数组中删除元素。
  • 您可以从使用数组实现的有序列表中删除,尽管删除第一个或最后一个以外的元素效率低下。
  • 可以从散列中删除元素,而且效率很高。
  • 关于arrays - 什么时候在 Perl 中使用数组而不是散列更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25313658/

    相关文章:

    c++ - 在 C 和 C++ 中使用 const 限定符指向数组的指针

    java - 使用参数创建此构造函数类

    sql - 将项目数组存储在SQL表中

    xml - Perl 中 XML::Twig 的性能调优和优化

    windows - 如何在 Perl 中以管理员模式打开命令提示符

    ruby - 将作为键值对的字符串转换为 ruby​​ 中的哈希

    php - 如何获取数组中的逗号分隔符(,)值?

    perl - 如何在命令行中将哈希作为可选参数传递给 -M

    c++ - 如何创建迭代器的 QSet

    language-agnostic - 加密安全的附加哈希函数