在数组中查找元素的位置

时间:2015-02-26 12:02:28

标签: c++

如何在数组中找到元素的位置?我有以下代码,我需要测试元素是否在某个位置,但是它没有按预期工作。我需要你的帮助。

string knockemdead[4], bashemup[4], street[4], newyork[9999];
string car;

    if (knockemdead[i] == car)
    {

        if (knockemdead[i].find(1)){ // tried knockemdead[i] = knockemdead[1] and knockemdead[i].at(1) but all it did was nothing
            fare = 10;
        }
        else if (knockemdead[i].find(2))
        {
            fare = 15;
        }

        else if (knockemdead[i].at(3) || knockemdead[i].at(4))
        {
            fare = 25;
        }

2 个答案:

答案 0 :(得分:0)

如果cont是某种形式的T容器,obj是T的对象,则 和T实现==,然后:

auto iter = find( begin(cont), end(cont), obj );

将返回对象的迭代器(或者比较等于它的东西),
如果容器中不存在此类对象,则为end()

如果容器是随机访问(vectorarray等),那么:

auto idx = iter - begin(cont);

将返回找到的对象的索引

find<algorithm>中声明,并假设namespace std可以访问

另一种解决方案是手动&#39;

int idx;
for(idx=0; idx<SZ; ++idx)
    if( cont[idx] == obj ) break;

您需要先将容器的大小放在SZ中 如果没有找到对象,则idx将具有值SZ,如果没有找到对象,则其值为

答案 1 :(得分:0)

您可以创建一个找到位置的方法。 示例

int findElementPositionInArray(TYPE[] array , TYPE elementValue){

 for(int i=0 ; i<array.length ; i++){
   if(array[i]==elementValue){
      return i;
   }
  //let's also treat the case in which the element is not found in the array
  //this way we can test the output (we know that if this method returns -1 
  //the element is not in the array
  return -1;
}   

}

所以只需将TYPE替换为您想要的类型(我可以看到您的案例的字符串)并调用此方法。 对于更复杂的数据类型(例如,您自己的类可能包含多个基本类型),请确保正确覆盖“==”运算符。

可能包含错误,我现在没有IDE来测试它。希望它有帮助