gpt4 book ai didi

c++ - 是否有可能在任何地方引发异常的 STL 容器方法列表?

转载 作者:IT老高 更新时间:2023-10-28 23:14:22 25 4
gpt4 key购买 nike

我知道 STL 会抛出内存分配错误,或者如果包含的类型在其构造函数/赋值运算符中抛出。

否则,显然“一些”STL 方法可能会引发其他异常。每个人似乎都提到的例子是vector::at(),但我在任何地方都找不到其他人的列表。

有人知道这样的 list 吗?

最佳答案

不会 100% 准确,并且适​​用于 C++03,但基于通过 GCC 4.3.4 grepping 的半小时工作包括,忽略 tr1 和 ext 但包括 iostream。至关重要的是,其中一些检查可能是由于此实现更喜欢更具防御性的编码,并且可能未在标准中强制要求并且普遍可用....

  • 位集
    • std::overflow_error - .to_ulong() 当太多位无法放入 unsigned long 时
    • std::out_of_range - operator[]() 尝试结束
    • std::bad_alloc
  • 类型信息
    • std::bad_cast 尝试无效 dynamic_cast
  • ios
    • std::ios_base::failure 使用异常掩码进行错误报告时
  • 字符串
    • out_of_range - at/append/assign/insert/erase/replace/copy/substr
    • length_error:在 reserve 期间尝试超过 max_size() 或隐式调整大小(例如 assign/插入/+=等)
  • 语言环境
    • std::bad_cast 如果语言环境不包含 Facet
    • 类型的方面
    • std::runtime_error 在各种 null-pointer/undefined-facet 情况下
  • deque/ vector
    • length_error:尝试 reserve() 或隐式增长 > max_size()
    • out_of_range:at()
  • map
    • std::out_of_range: at()

关于c++ - 是否有可能在任何地方引发异常的 STL 容器方法列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4273057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com