袁博特 2020-07-05 13:10 采纳率: 25%
浏览 67

请问为什么输出会报错,(应该是迭代器交换出了问题),请解释一下为什么不可以这样呢?

#include
#include

using namespace std;

int main()
{
vector array{3, 5, 2, 6, 4};
vector outArray{ 1,2,3 };

vector<int> ::iterator it=array.begin();
vector<int> ::iterator it1=array.end();
iter_swap(it,it1);
outArray.assign(it1,it);//清空原数据,赋予新数据={3,5,2,6,4}

cout<<outArray[0];

}
输出报错
terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-07-05 13:30
    关注

    outArray.assign(it1,it);都指向了同一个数组,造成无限添加,最后内存不足

    评论

报告相同问题?

悬赏问题

  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?