有没有办法检查int是否不等于数组中的所有值? (C ++)

时间:2017-09-13 14:05:28

标签: c++ arrays

我知道有一种方法可以检查一个值是否在一个数组中,但有没有办法 检查一个值是不是?

此代码将检查每个索引,但在进入下一个索引时将忽略过去的索引。 (即是否有代码检查vary_result!="数组中的所有值"?)

int buffer; //all variables
int vary_result;
int range;
int minimum_value;
for(int j = 0; j < buffer; j++) {
    if(vary_result == buffer_array[j]){
        vary_result = rand() % range + minimum_value; // creates a random value and saves it at vary_result
        };
    };
cout << vary_result << endl;

2 个答案:

答案 0 :(得分:4)

  

我知道有一种方法可以检查某个值是否在数组中,但有没有办法检查某个值是否不存在?

第二个与第一个相反:

auto begin = buffer_array;
auto end   = buffer_array + buffer;
auto it = std::find(begin, end, value );
if( it == end ) // value not found which means none of the elements equal to value, which means value is not in array
    // do whatever, but do not dereference it

答案 1 :(得分:2)

是的,有一种方法可以测试某个值是否不在数组中。我是这样做的:

 bool valueInArray;
 bool valueNotInArray = true;
 int valueToTest = 10;
 int valuesArray[] = [1, 2, 3, 5, 9];


 for(int i = valuesArray.length(); i <= valuesArray.length(); i++) {
 if(valueToTest == valuesArray[i]) 
    notInIt == false;
 }

 if (notInIt == false) 
    valueInArray = true;
 else
    valueInArray = false;

基本上,我创建了两个布尔值,一个要测试的数字和一个数组。我通过for循环遍历数组,以测试数字是否在数组中。然后,我使用if / else设置与前一个布尔相反的另一个布尔值。这样,最终的布尔值反映了值是否不在数组中。