在c++中映射两组值

Mapping two set of values in C++

本文关键字:两组 c++ 映射      更新时间:2023-10-16

对于这样一个幼稚的问题,我深表歉意。我知道这很简单。但现在我什么也想不起来了。

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

我有两个整数数组,每个数组有50个成员。当指定了第一个数组中的一个元素时,我需要确定第二个数组中对应的数字是什么,反之亦然。我有提供给我查找的元素属于哪个数组的信息,即数组1或数组2。

Ex: 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是最好的选择,还是我必须寻找任何有效的搜索算法?我想知道如果你必须这样做,你会选择哪个选项。

任何想法吗?

您可以使用std::map来提高可读性和一点效率,尽管在您的情况下效率是无关紧要的

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

这只是一种方式(数组1 ->数组2)。我不确定是否有其他更简单的方法,但是创建第二个映射。

支持反向查找,或者从(数组2 ->数组1),反向映射查找建议使用Boost。Bimap

我认为有两种方法都已经被建议过了;

  1. 将两个数组作为键对值放在map中,遍历map查找对应的值或键。

  2. 遍历输入所在的数组并计算索引。

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