C++ Tutorial/STL Introduction/out of range exception

Материал из C\C++ эксперт
Версия от 10:29, 25 мая 2010; Admin (обсуждение | вклад) (1 версия: Импорт контента...)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Access out-of-range element

#include <iostream>
using std::cout;
using std::endl;
#include <vector>    // vector class-template definition
#include <algorithm> // copy algorithm
#include <iterator>  // ostream_iterator iterator
#include <stdexcept> // out_of_range exception
int main()
{
   int array[ 6 ] = { 1, 2, 3, 4, 5, 6 };
   std::vector< int > integers( array, array + 6 );
   std::ostream_iterator< int > output( cout, " " );
   integers.push_back( 2 );
   integers.push_back( 3 );
   integers.push_back( 4 );
   cout << "Vector integers contains: ";
   std::copy( integers.begin(), integers.end(), output );
   try
   {
      integers.at( 100 ) = 777;
   } catch ( std::out_of_range outOfRange ) // out_of_range exception
   {
      cout << "\n\nException: " << outOfRange.what();
   }
   return 0;
}
Vector integers contains: 1 2 3 4 5 6 2 3 4
Exception: vector::_M_range_check

Catch out_of_range exception

#include <iostream>
#include <vector>
#include <exception>
#include <stdexcept> // out_of_range exception
using namespace std;
int main( ) {
  char carr[] = {"a", "b", "c", "d", "e"};
  vector<char> v;
  v.push_back("a");
  v.push_back("b");
  v.push_back("c");
  v.push_back("d");
  v.push_back("e");
  try {
    cout << v.at(10000) << "\n";
  } catch(std::out_of_range& e) {
    cerr << e.what( ) << "\n";
  }
}

Use std::out_of_range Exception for vector

#include <iostream>
using std::cout;
using std::endl;
#include <vector>    // vector class-template definition
#include <algorithm> // copy algorithm
#include <iterator>  // ostream_iterator iterator
#include <stdexcept> // out_of_range exception
int main()
{
   int array[ 6 ] = { 1, 2, 3, 4, 5, 6 };
   std::vector< int > integers( array, array + 6 );
   std::ostream_iterator< int > output( cout, " " );
   integers.push_back( 2 );
   integers.push_back( 3 );
   integers.push_back( 4 );
   cout << "Vector integers contains: ";
   std::copy( integers.begin(), integers.end(), output );
   try
   {
      integers.at( 100 ) = 777;
   } catch ( std::out_of_range outOfRange ) // out_of_range exception
   {
      cout << "\n\nException: " << outOfRange.what();
   }
   return 0;
}
Vector integers contains: 1 2 3 4 5 6 2 3 4
Exception: vector::_M_range_check