私の質問は: STL スタックに関する次のコードは正しいですか?
コードでは、complex は、コンストラクターとデストラクタが定義されたユーザー定義クラスです。1 位以降は複雑なコンストラクタとデストラクタがそれぞれ 5 回呼び出され、2 位以降は pop() によって再び複雑なデストラクタが 5 回呼び出されます。したがって、全体として、デストラクタはコンストラクタよりも多く呼び出されます。IMOそれは起こらないはずです。私のコードは正しいですか?正しくない場合、それを修正する方法は?スタックではなくスタックをまだ使用しているとします
#include <stack>
#include "complex.h"
using namespace std;
void test_stack(){
stack<complex> mystack2;
cout << "Pushing complex..." << endl;
for (int i=0; i<5; ++i) {
complex c(i,i);
mystack2.push(c);
}
//place 1
cout << "Popping out complex..." << endl;
while (!mystack2.empty())
{
cout << " " << mystack2.top();
mystack2.pop(); //void pop();
}
//place 2
cout << endl;
}