Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-整数到数组索引_C_Arrays_Indexing - Fatal编程技术网

C-整数到数组索引

C-整数到数组索引,c,arrays,indexing,C,Arrays,Indexing,理想情况下,我希望能够有2个阵列。第一个是整数数组,如: n[0]=30000; n[1]=650; n[2]=3; …最多50个左右的值 我需要找到最快的方法(最有效,并且希望能够使用注册变量),以便能够使用值从值数组中获取索引,如: x[30000]=0; x[650]=1; x[3]=2 这看起来像是一个关联数组(我需要另一个lib),但这似乎是一件如此简单的事情,以至于我无法相信这些功能还不存在。我将只处理50个左右的值,所以在本例中创建一个30001数组,只是为了能够将一个整数映射到另

理想情况下,我希望能够有2个阵列。第一个是整数数组,如: n[0]=30000; n[1]=650; n[2]=3; …最多50个左右的值

我需要找到最快的方法(最有效,并且希望能够使用注册变量),以便能够使用值从值数组中获取索引,如: x[30000]=0; x[650]=1; x[3]=2

这看起来像是一个关联数组(我需要另一个lib),但这似乎是一件如此简单的事情,以至于我无法相信这些功能还不存在。我将只处理50个左右的值,所以在本例中创建一个30001数组,只是为了能够将一个整数映射到另一个整数,这将是荒谬的


有谁能告诉我将一个int映射到另一个int的最佳方法吗?记住,每个int的值不会超过50,并且不会循环检查每个int是否匹配?谢谢你的帮助

如果您真的不想要30000个元素的逆数组,那么您几乎像您所怀疑的那样被哈希表卡住了。简单的整数散列是非常有效和好的。最快的是30001数组。您还可以使用哈希表、平衡的二元搜索树或使用二元搜索的结构数组来完成此操作。但我认为你只是在浪费开发时间。循环检查一个数组有50个条目是如此之快,努力优化它几乎肯定是一个浪费。你必须考虑什么是可以存储在第一个数组中的最高可能值,因为这将是你的第二个数组的大小。如果你的值是编译时常量,你可以使用一个长的
开关
,让编译器为你找出最有效的查找策略。我同意所有“对于那些少数值,不值得努力”的评论。但是,如果有更多的值或在更大的下标范围内,可以尝试使用稀疏文件。