【问题标题】:How do I create an array of ints using strings for indexing如何使用字符串创建一个整数数组进行索引
【发布时间】:2013-05-21 09:34:42
【问题描述】:

我不知道这叫什么,所以我不知道用什么谷歌来学习如何做到这一点。

我正在用 C 编程。

我有一个整数数组,我希望用字符命名;

例如

char s1[21] = "firsta1"
char s2[21] = "seconds2"

等等等等

然后是整数数组,假设整数数组称为索引。

index[s1] = 7
index[s2] = 14

等等等等

谢谢,

【问题讨论】:

  • 你想用 c 还是什么?正是您用来查找元素的字符串(关联)?

标签: c arrays integer


【解决方案1】:

您正在寻找哈希映射或哈希表(同一事物的两个名称)。这些不是数组,即使它们在某些语言中被错误地命名为 (我在看你,PHP)。根据定义,数组是一个内存区域,该区域使用该区域的偏移量进行索引,这意味着您必须使用数字对其进行索引。

哈希映射在查找键之前对键应用哈希函数,因此它们将字符串键转换为数字。

【讨论】:

  • 它们是关联数组。称它们为数组仍然很有效。 en.wikipedia.org/wiki/Associative_array 实际上,使用哈希这个词太具体了,因为问题不一定关心实现是否涉及哈希。他想要的是一个以某种方式关联的数据数组。
【解决方案2】:

这被称为关联数组。在 shell 编程中,我们有关联数组。在 c++ 和 java 中,我们可以通过 Maps [HashMap, TreeMap] 实现这一点

Map<Key,Value>

key用于标识值;键应该是唯一的。

我认为 C 没有内置的功能。也许您可以通过其他方式实现这一目标。

您创建这些字符串 s[21]="str" ... 将其传递给某个函数,比如 hash。

   hash(char *str)
   {
      // Keep a cache (a table here its array)
       lookup the string in table;
       if(present)
           return index;           
       else
           store str in table with appropriate index;
   }

使用

       array[hash(str)] 

做你想做的事。这是我的想法,可能还有其他一些最好的方法。或者某些库(例如:Boost)可能具有关联数组。

【讨论】:

  • @Max 这会实现你的意图吗?
  • 谢谢,我想是的。我的问题是直到运行时我才知道“s1”或“s2”等的值(我正在读取一个文件并从那里开始)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
相关资源
最近更新 更多