typedef

We can use typedef to hide implementations. For instance, say you want to implement a Stack using a C++ Vector.

You can say this

typedef vector<string> Stack;

Then, for the function implementations, you can just use these:

bool isEmpty (const Stack& s){ 
	return 0 == s.size(); 
} 
 
void push (Stack& s, string e){ 
	s.push_back(e); 
} 
 
void pop (Stack& s) { 
	assert(!isEmpty(s)); 
	s.pop_back(); 
}

Some other coming things:

typedef long long ll;