我想看看一个值是否等于数组中的任何值。 像这样
Beginning of function(here I give Val differnt values with for loops...)
for (i=0;i<array_size;i++)
if (Val==array[i])
do something
else
do something else if non of the above values matched val...
如果没有一个Arrayvalues与我的val匹配,我想做其他的事情,但只有一次......如果它匹配,那么我想回到函数的开头,这会给我一个不同的值VAL ... 我应该在哪里放入这段代码
Thx,这是一个很棒的论坛 / Buxley
答案 0 :(得分:3)
使用标志来指示条件是否至少满足一次:
bool hasMatch = false;
for (i=0;i< array_size;i++) {
if (Val==array[i]) {
// do something
hasMatch = true;
}
}
if( !hasMatch ) {
// do whatever else
}
这将为每个匹配元素调用“做某事”。如果你想为第一个匹配元素调用它,只需在“做某事”后使用break;
。
答案 1 :(得分:3)
您可以使用查找功能
int find(int value, int* array, int size) {
int i;
for (i=0; i<size; i++) {
if (array[i]==value) {
return i;
}
}
return -1;
}
现在你可以做到
if (find(value, array, array_size)>=0)) {
do_something_when_found();
} else {
do_something_when_not_found();
}
答案 2 :(得分:3)
对于大多数查找操作,STL都有一个算法。可以使用... std :: find。
来查找数组中的值const char values[] = "abcdefg";
const char* values_end = values + _countof( values );
const bool dPresent =
std::find_if( values, values_end , 'd' ) != values_end ;
if( dPresent ) {
...
}
答案 3 :(得分:2)
抱歉干预。我有一些感觉,你会问smth。其他。据我了解,您有一组有序的值,并希望从数组中找到第一个可能的值。
如果是这样,请使用C ++标准库中的find_first_of
算法。 STL中的算法可能更适合您的编译器(例如,它们可能支持并行搜索)。
以下是来自CPPReference.com的改编代码。您不仅限于int值。
int nums[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int* nend = &nums[10];
int targets[] = { 9, 4, 7 };
int* tend=&targets[3];
using namespace std;
int* result = find_first_of( &nums[0], nend, &targets[0], tend );
if( result == nend )
cout << "Did not find any of { 9, 4, 7 }" << endl;
else
cout << "Found a matching target: " << *result << endl;
找到的值result
指向nums
数组中与targets
数组元素的第一个可能元素匹配的元素。如果没有匹配result
等于nend
。
最诚挚的问候,
Ovanes
答案 4 :(得分:2)
请查看STL可以为您做些什么。
if (std::find(array,array+array_size,Val) != array+array_size)
{
// Found it.
}
else
{
// Did not find it.
}
答案 5 :(得分:1)
不完全确定你追求的是什么。如果您找到匹配项,然后从函数返回,您可以随时执行您的工作。
for (int i=0; i < array_size; i++) {
if (Val==array[i]) {
// do something
return;
}
}
// if we end up here, there was no match
// do something else ..
或者,你可以设置一个布尔值并打破循环,有很多方法。选一个:)