首页 > 试题广场 >

完成下面的题目: (1) 列出下面的f()可能抛出的所有异常

[问答题]
完成下面的题目:
(1)
列出下面的f()可能抛出的所有异常。
void f(vector<X>& v, const X& g)
{
  v[2] = g;
  v.push_back(g);
  sort(v.begin(),v.end());
  vector<X> u = v;
  // ...
  // u在这里析构:我们必须保证X的析构函数能正确工作
}
(2)
如果在试图复制g时赋值操作抛出异常会出现什么情况呢?会给v留下一个非法元素吗?如果v.push_ back( )用于去复制g的构造函数抛出std::bad_alloc, 那么又会发生什么情况?元素的个数会改变吗?会不会把一个非法元素加进容器里?如果在排序过程中X的小于运算符指出异常会发生什么情况?元素会被部分排序吗?会不会有某个元素被排序算法从容器里删除而没有放回去?

这道题你会答吗?花几分钟告诉大家答案吧!