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