Mega Code Archive

 
Categories / C++ Tutorial / Vector
 

Checked and Unchecked Access of a Vector

#include <iostream> #include <vector> using namespace std; // comment next line out when debugging #define NDEBUG class Ship {    public:    Ship( const float cargo_weight[], int length );    float operator[]( int index ) const;    // REQUIRE: 0 <= index < cargo_loads()    // RETURN: weight of load with specified index    int cargo_loads() const;       private:       vector<float> weight_;    };    inline    Ship::Ship( const float weight[], int length )       : weight_( weight, weight+length )    {} // empty    inline    float Ship::operator[]( int index ) const    {    #ifdef NDEBUG       return weight_[index]; // don't check range when not debugging    #else       return weight_.at( index ); // check range when debugging    #endif    }    inline    int Ship::cargo_loads() const    { return static_cast<int>( weight_.size() ); }    int main( )    {       const int num_loads = 3;       const float weights[num_loads] = { 40.8f, 35.2f, 22.1f };       // make a ship and load it with cargo       Ship ship( weights, num_loads );    }