What is the Standard Template Library in C++, and how do you choose between different container types?