C++ 在C++;

C++ 在C++;,c++,C++,对于这样一个天真的问题,我深表歉意。我知道这很简单。但是现在我什么都没想到 我使用C++。我有点担心效率,因为这是针对处理能力和RAM非常少的嵌入式硬件 我有两个整数数组,其中50个成员是函数的局部成员。当指定第一个数组中的元素时,我需要确定第二个数组中的对应数字是多少,反之亦然。我有提供给我用于查找的元素属于哪个数组的信息,即数组1或数组2 例如:Array1=>500 200 1000 300….. Array2 => 250 170 500 400 ..... 输入500,输出

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

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

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

例如:
Array1=>500 200 1000 300…..

 Array2 => 250 170 500  400 .....
输入500,输出250

输入400,输出300

输入200,输出170,依此类推

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


有什么想法吗?

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

std::map<int,int> mapping;
.... //populate 
cout <<mapping[200]; //170
std::map映射;
.... //居住于

cout Array 1),建议使用

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

std::map<int,int> mapping;
.... //populate 
cout <<mapping[200]; //170
std::map映射;
.... //居住于

cout Array 1),建议使用

根据我的说法,有两种方法,两种方法都已经被建议过了

  • 将这两个数组作为密钥对值放在映射中,并遍历映射以查找相应的值或密钥

  • 遍历存在输入的数组并计算索引。在另一个数组中获取该索引的值


  • 我会选择第二种更简单的解决方案。此外,静态数组中只有50个元素,您无需担心性能。

    根据我的说法,有两种方法可以做到这一点,这两种方法都已经提出

  • 将这两个数组作为密钥对值放在映射中,并遍历映射以查找相应的值或密钥

  • 遍历存在输入的数组并计算索引。在另一个数组中获取该索引的值


  • 我会选择第二种更简单的解决方案。此外,静态数组中只有50个元素,您无需担心性能。

    只有50个元素,效率永远不会有问题。如果数组是静态的,索引是否足够?只有50个元素,效率永远不会有问题。如果数组是静态的,索引是否足够?如果数组是静态的,然后一个
    开关
    /
    案例
    语句可能是最快的。否则,
    std::map
    可能是最好的。@DavidSchwartz:哦,是的。我完全错过了开关箱选项。我知道它会产生一个很长很奇怪的函数,但就效率而言,这将是我最好的选择。如果数组实际上是静态的,那么一个
    开关
    /
    case
    语句可能是最快的。否则,
    std::map
    可能是最好的。@DavidSchwartz:哦,是的。我完全错过了开关箱选项。我知道它会产生一个冗长而怪异的功能,但就效率而言,这将是我最好的选择。David Schwartz建议的开关盒选项是最有效的。我明白了。开关盒是最有效的。但是有50个元素,你将以一个巨大的功能结束。+1添加。大卫·施瓦茨建议的开关盒选项是最有效的。我明白了。开关盒是最有效的。但是有50个元件,你将以一个巨大的功能结束。