For 1. Templating just the constructor is ok, and have a nice side effect: you will not need to specify template parameters, because they will be detected.
For 2. If you stick with templating the class, you have a small problem in
MyLookUp< std::vector::iterator> lookup(foo.begin(), foo.end(), ...)
std::vector
is not a type, but a template. You need to say e.g.
MyLookUp< std::vector<int>::iterator> lookup(foo.begin(), foo.end(), ...)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…