zoukankan      html  css  js  c++  java
  • 实战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() << '
    ';
      }
      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() << '
    ';
      }
      return 0;
    }

    vector* pData;

  • 相关阅读:
    SQL_TRACE与tkprof分析
    mysql学习之-三种安装方式与版本介绍
    1400
    输出二叉树中所有从根结点到叶子结点的路径
    [置顶] 处世悬镜之舍之
    Azkaban2配置过程
    [置顶] 处世悬镜之舍之 二
    UVALIVE 5893 计算几何+搜索
    Paxos算法 Paxos Made Simple
    Spring AOP 详解
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7151238.html
Copyright © 2011-2022 走看看