Generic Stack (C++)

From RAD Studio Code Examples
Jump to: navigation, search

Description

This example demonstrates the usage of a generic stack in C++Builder. This example uses the header <stack> from the Dinkumware Standard C++ Library (STL).

Code

#include <stack>
#include <iostream>
using namespace std;
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
	// Create the stack
	stack<UnicodeString>stk;

	// Add elements to the stack
	stk.push("John");
	stk.push("Mary");
	stk.push("Bob");
	stk.push("Anna");
	stk.push("Erica");

	// Show the last pushed element "Erica"
	MessageDlg("Last elemnt pushed is: " + stk.top(),
		TMsgDlgType::mtInformation, TMsgDlgButtons() << TMsgDlgBtn::mbOK, 0);

	// Pop the last pushed element
	stk.pop();

	// Show the number of elements in the stack "4"
	MessageDlg("The stack contains: " + IntToStr((int)stk.size()) +
		" elements.", TMsgDlgType::mtInformation,
		TMsgDlgButtons() << TMsgDlgBtn::mbOK, 0);

	// Show the last pushed element "Anna"
	MessageDlg("Last elemnt pushed is: " + stk.top(),
		TMsgDlgType::mtInformation, TMsgDlgButtons() << TMsgDlgBtn::mbOK, 0);

	// Lambda expression for clearing the stack
	// This piece of code will execute only for 64-bit C++ applications
#ifdef _WIN64
	[&]
	() {
		stack<UnicodeString>empty;
		swap(stk, empty);
	}();
#endif

	// Show the number of elements in the stack "0"

	MessageDlg("The stack contains: " + IntToStr((int)stk.size()) +
		" elements.", TMsgDlgType::mtInformation,
		TMsgDlgButtons() << TMsgDlgBtn::mbOK, 0);
}
// ---------------------------------------------------------------------------

Uses

See Also