在C ++中映射两组值

时间:2013-01-04 05:32:13

标签: c++

我真诚地为这样一个天真的问题道歉。我知道这很简单。但现在我脑子里什么都没有。

我正在使用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是最好的选择还是我必须寻找任何有效的搜索算法?我想知道你是否必须这样做,你将选择哪个选项。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

你可以使用std :: map来提高可读性和效率,但在你的情况下效率很小

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

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

为支持反向查询或从(数组2 - >数组1)开始,Reverse map lookup建议使用Boost.Bimap

答案 1 :(得分:1)

据我所知,有两种方法可以做到这两点;

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

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

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