如何在数组中找到元素的位置?我有以下代码,我需要测试元素是否在某个位置,但是它没有按预期工作。我需要你的帮助。
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;
}
答案 0 :(得分:0)
如果cont
是某种形式的T容器,obj
是T的对象,则
和T实现==,然后:
auto iter = find( begin(cont), end(cont), obj );
将返回对象的迭代器(或者比较等于它的东西),
如果容器中不存在此类对象,则为end()
。
如果容器是随机访问(vector
,array
等),那么:
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来测试它。希望它有帮助