Added a templated constructor that can take any container that supports .size()