Defensive Programming
Bounds Checks
Explicit bounds checks let code avoid reading outside a vector.
Bounds Checks
bounds_checks.cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> scores{72, 85, 91};
int index = ;
bool inRange = index >= 0 && index < static_cast<int>(scores.size());
int score = inRange ? scores[index] : -1;
std::cout << "index=" << index << std::endl;
std::cout << "inRange=" << inRange << std::endl;
std::cout << "score=" << score << std::endl;
return 0;
}
#include <iostream>
#include <vector>
int main() {
std::vector<int> scores{72, 85, 91};
int index = ;
bool inRange = index >= 0 && index < static_cast<int>(scores.size());
int score = inRange ? scores[index] : -1;
std::cout << "index=" << index << std::endl;
std::cout << "inRange=" << inRange << std::endl;
std::cout << "score=" << score << std::endl;
return 0;
}
#include <iostream>
#include <vector>
int main() {
std::vector<int> scores{72, 85, 91};
int index = ;
bool inRange = index >= 0 && index < static_cast<int>(scores.size());
int score = inRange ? scores[index] : -1;
std::cout << "index=" << index << std::endl;
std::cout << "inRange=" << inRange << std::endl;
std::cout << "score=" << score << std::endl;
return 0;
}
bounds check
A vector index is safe only when it is greater than or equal to zero and less than the vector size.