mau*_*hez 0 c++ for-loop vector
我有以下功能:
int FamiliesController::returnFamilySelected(){
for ( int i = 0; i < isFamilyCoosenController.size(); i++){
if ( isFamilyChosenController[i] == true){
return i;
}
}
}
Run Code Online (Sandbox Code Playgroud)
此函数返回一组布尔值的索引,当其中一个为true时,它非常直接地返回其在向量中的索引。我现在遇到的问题是,当所有布尔值都为假时。该函数返回一个怪异的数字-1029384。如果我将它们进行如下比较:
int FamiliesController::returnFamilySelected(){
for ( int i = 0; i < isFamilyChosenController.size(); i++){
if ( isFamilyChosenController[i] == true){
return i;
}else if ( is FamilyIsChosenController[i] == false){
return - 1;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它将始终返回-1。因为只有一个元素为真并不重要,所以一旦它在向量中传递了布尔值,它将立即返回false,因为下一个元素为false。我需要始终返回的已变为true的索引。
无论如何有没有要举例说明(伪代码):
for ( int i = 0; i < isFamilyChosenController.size(); i++){// we check in our vector of booleans
if ( One boolean == true ){
return the index of that boolean;
}else if ( all the booleans == false ){
return -1; // a number that is out of the container size but I can manipualte
}
Run Code Online (Sandbox Code Playgroud)
让我们在这里注意,我没有使用c ++ 11。
谢谢!
只需return -1在循环之后放。值之一满足您的条件,然后返回其索引,否则循环结束并返回-1。
就是说,在C ++中惯用的方式是使用std::find。