C++ 如何从C+中的容器类中删除第一个元素+;节目?

C++ 如何从C+中的容器类中删除第一个元素+;节目?,c++,class,visual-c++,containers,C++,Class,Visual C++,Containers,每次我运行一个名为Loan&removeFirst(){}的方法时,我的程序总是崩溃。每当我试图删除我创建的临时贷款结构时,程序就会崩溃。我可以展示容器类的一些背景和函数的代码: 类列表{ 公众: //默认构造函数分配适当的堆存储 //将元素存储在如下声明的堆数组上: //新贷款*[初始规模]; 列表长度(int initial_size=4){ 要素=新贷款*[初始规模]; numberOfElements=0; 容量=初始尺寸; 指数=0; } ~ListOfLoans(void){ cou

每次我运行一个名为Loan&removeFirst(){}的方法时,我的程序总是崩溃。每当我试图删除我创建的临时贷款结构时,程序就会崩溃。我可以展示容器类的一些背景和函数的代码:

类列表{
公众:
//默认构造函数分配适当的堆存储
//将元素存储在如下声明的堆数组上:
//新贷款*[初始规模];
列表长度(int initial_size=4){
要素=新贷款*[初始规模];
numberOfElements=0;
容量=初始尺寸;
指数=0;
}
~ListOfLoans(void){

cout删除指针数组(指向指针的指针)时,通常会执行以下操作:

for(int i = 0; i < capacity; ++i)
{
    delete temp[i];
}
delete [] temp;
elements[index] = temp[index+1];

最后,如果要删除列表中的第一个元素,first()会做什么在内部执行?从我上面看到的情况来看,您似乎已经删除了第一个元素,或者打算删除第一个元素。如果删除了第一个元素,则在返回该元素时,它可能会被删除,因此您需要在本地复制该指针,并让for循环删除所有元素,从而跳过第一个元素,这样您就可以获得仍然有效的内容return!

您没有提供size()的实现。它只返回numberOfElements吗?如果没有,那可能是您的问题。如果numberOfElements>capacity/2,您的循环会破坏堆,最终导致崩溃


如果size()返回numberOfElements,根据您提供的信息,我发现这段代码有很多问题,但不是崩溃的原因。

是否需要在此处创建自己的容器?否则,只需
container.erase(container.begin());
size()返回numberOfElements。这会导致Loan&removeFirst出现问题吗()?代码应该回答列表中的第一个元素并将其删除。同时size()返回numberOfElements()。那么,我应该在删除前复制第一个元素,然后返回它吗?