0

对于这样一个幼稚的问题,我深表歉意。我知道这很简单。但现在我什么都没有想到。

我正在使用 C++。我有点担心效率,因为这是针对处理能力和 RAM 非常少的嵌入式硬件。

我有 2 个整数数组,其中有 50 个函数本地成员。当指定第一个数组中的元素时,我需要确定第二个数组中的相应数字是多少,反之亦然。我知道提供给我用于查找的元素属于哪个数组,即数组 1 或数组 2。

前任 :Array1 => 500 200 1000 300 .....

 Array2 => 250 170 500  400 .....

Input 500 , Output will be 250

Input 400 , Output will be 300

input 200 , Output will be 170 and so on

我认为数组查找效率最低。stl::map 是最佳选择还是我必须寻找任何有效的搜索算法?我想知道您是否必须这样做,您将选择哪个选项。

有什么想法吗?

4

2 回答 2

4

您可以使用 std::map 来提高可读性和一点效率,尽管在您的情况下效率是小问题

std::map<int,int> mapping;
.... //populate 
cout <<mapping[200]; //170

不过,这只是一种方式(阵列 1 -> 阵列 2)。我不确定是否有其他更简单的方法,但创建第二张地图。

为了支持反向查找,或者从 (Array 2 -> Array 1) 开始,反向映射查找建议使用Boost.Bimap

于 2013-01-04T05:33:55.437 回答
1

根据我的说法,已经提出了两种方法;

  1. 将两个数组作为键对值放入映射中并遍历映射以找到相应的值或键。

  2. 遍历输入所在的数组并计算索引。在其他数组中获取该索引的值。

我会选择第二种解决方案,因为它更容易。此外,静态数组中只有 50 个元素,您无需担心性能。

于 2013-01-04T07:19:18.873 回答