In C++ "struct" has exactly the same features as "class".
The only difference is that by default "struct" is public and "class" is private.
"class" sounds more oop, though.
"typedef" becomes rather useful when handling nested templates and types start to look like this:
std::map< std::pair<std::string, std::string>, std::vector<std::string> >