如何使用字符串作为索引创建一个整数数组

3

我不确定这个叫什么,所以我不知道该谷歌搜索以学习如何做这件事。

我正在使用C语言进行编程。

我有一个整数数组,我想用字符命名它们;

例如

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

然后是整数数组,假设整数数组名为index。

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

请问您需要的翻译是什么内容呢?

你想用C语言实现还是其他语言?你用什么字符串来查找元素(关联)? - Dineshkumar
2个回答

1

这被称为关联数组。在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 这样做能达到你的目的吗? - Dineshkumar
谢谢,我也这么认为。 我的问题是,直到运行时我不知道“s1”或“s2”等的值(我正在读取文件并从那里开始)。 - Max

-1
你正在寻找哈希映射或哈希表(两个表示同一物的名称)。它们不是数组,即使在某些语言中错误地命名为数组(我看到你了,PHP)。 数组根据定义是一个内存区域,索引偏移量进入该区域,这意味着您必须使用数字进行索引。
哈希映射在查找键之前对其应用哈希函数,因此将字符串键转换为数字。

它们是关联数组。称它们为数组仍然是非常有效的。实际上,使用哈希这个词太具体了,因为问题并不一定关心实现是否涉及哈希。他想要的是一种以某种方式关联数据的数组。 - xaxxon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接