vector的一些异常

最后更新于:2022-04-01 06:44:24

##实战c++中的vector系列--vector的一些异常 今天就写一写vector的一些异常,可以捕捉的异常。 **out_of_range**  相当于数组的越界了。vector会自动增大容量,但是如果索引超出了当前的size,就会引发异常。 ~~~ #include<iostream> #include<vector> using namespace std; int main() { vector<int>v(4); std::cout << v[0] << std::endl; std::cout << v[1] << std::endl; std::cout << v[2] << std::endl; std::cout << v[3] << std::endl; std::cout << v[4] << std::endl;//越界 return 0; } ~~~ 除了使用索引外,还有使用vector.at()时发生越界: ~~~ #include <iostream> // std::cerr #include <stdexcept> // std::out_of_range #include <vector> // std::vector int main (void) { std::vector<int> myvector(10); try { myvector.at(20)=100; // vector::at throws an out-of-range } catch (const std::out_of_range& oor) { std::cerr << "Out of Range error: " << oor.what() << '\n'; } return 0; } ~~~ **std::length_error**  在使用vector的时候,很少会引发std::length_error异常,但是如果疏忽大意写这样的代码: ~~~ #include <iostream> // std::cerr #include <stdexcept> // std::length_error #include <vector> // std::vector int main (void) { try { // vector throws a length_error if resized above max_size std::vector<int> myvector; myvector.resize(myvector.max_size()+1); } catch (const std::length_error& le) { std::cerr << "Length error: " << le.what() << '\n'; } return 0; } ~~~ vector* pData;
';