Since STL is based on function and class templates it can process all built in and user defined data types. Each version of a component generated from a template becomes specialized for a particular data type and therefore can be as efficiently as C++ code written directly for this data type.
Note that if many different data types are used, a large number of specialized components may result in substantial executable size expansion.