2017-09-13 118 views
-1

我知道有一种方法来检查值是否在一个数组中,但是有没有办法来检查一个值是否不是 ?有没有办法来检查一个int是否不等于数组中的所有值? (C++)

这段代码将检查每个索引,但是当它进入下一个索引时将忽略过去的索引。 (即有没有检查该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; 
+3

'vary_result = rand()%range + minimum_value'是什么意思?这似乎与所述目标没有任何关系 – Carcigenicate

+0

检查数值是否在数组中,调用结果'x',然后检查它是否不在数组中是'!x'。 – user463035818

+4

['std :: none_off'](http://en.cppreference.com/w/cpp/algorithm/all_any_none_of) – NathanOliver

回答

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 
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来设置另一个与前一个布尔值相反的布尔值。这样,最终布尔值反映该值是否不在数组中。

+0

您的代码有问题,比方说,如果数组的第二个值等于测试价值,而不是它会是假的。但是,如果数组的最后一个值不等于测试值,notIntIt将是真实的。因此,即使是这样,测试变量看起来并不在数组中。 –

相关问题