In most situations, it doesn't make much sense to create vectors of pointers to the
short datatype. Compare these two code samples:
vector<short*> myvector; //bad code.
short * pS = new short;
*pS = 2;
myvector.push_back(ps);
//***********************************
vector<short> myvector; // good code
myvector.push_back(2);
//***********************************
You'll note that each element in
vector<short> takes two bytes, whereas each element for
vector<short*> takes four bytes (for the pointer on an Intel 32-bit machine) and two additional bytes on the heap (for the new short). So a
short* takes a total of six bytes!
These unneccessary calls to new and delete leads to heap fragmentation and performance bottlenecksand they can be avoided easily by using vector<short>.
vector<short> is much cleaner with lesser space requirements.