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;