我有一个向量,其中包含一个类对象.我是这样宣布的
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.
访问一个空的是未定义的行为,所以你不能这样做,如果你这样做,你不能从程序的明显行为中推断出任何东西.front()
vector
queue.size()
比.erase
通话前少一个的事实应该告诉你这erase
已经奏效了.