获取空向量的front()会产生意外行为

cod*_*ons -1 c++ stdvector

我有一个向量,其中包含一个类对象.我是这样宣布的

vector<Aircraft> queue;
Run Code Online (Sandbox Code Playgroud)

我擦除了向量中的第一个元素.但它似乎仍然是向量中的第一个元素.我这样做了

queue.erase(queue->begin());
cout<<queue.size(); //printed 0 
Aircraft temp = queue.front();
cout<<temp.id; //expected a segfault error
Run Code Online (Sandbox Code Playgroud)

擦除第一个元素后,向量的大小为0(只有一个元素).当我试图查看temp(飞机)的id时,我期待一个seg错误错误,因为我从矢量中删除了第一个元素,之后大小为零.我甚至清除了向量,但'queue.front '仍然返回对象,而cout语句仍然打印对象的id.

CB *_*ley 6

访问一个空的是未定义的行为,所以你不能这样做,如果你这样做,你不能从程序的明显行为中推断出任何东西.front()vector

queue.size().erase通话前少一个的事实应该告诉你这erase已经奏效了.