I've never really found a good explanation for why they re-used a perfectly good term for things with a magnitude and a direction to mean "a dynamic array," so I'll agree with you there. 
However, couldn't you use namespaces, such as use mynamespace; instead of STL so that Vector is recognized as YOUR vector, rather than the STL vector? The entire purpose of a namespace is to prevent this type of naming conflict, isn't it?
EDIT: Added an example:
	Quote:
	
	
		| // using #include <iostream>
 using namespace std;
 
 namespace first
 {
 int x = 5;
 int y = 10;
 }
 
 namespace second
 {
 double x = 3.1416;
 double y = 2.7183;
 }
 
 int main () {
 using namespace first;
 cout << x << endl;
 cout << y << endl;
 cout << second::y << endl;
 cout << second::x << endl;
 return 0;
 }
 5
 10
 3.1416
 2.7183
 
 
 
 In this case, since we have declared that we were using namespace first, all direct uses of x and y without name qualifiers were referring to their declarations in namespace first.
 | 
	
 http://www.cplusplus.com/doc/tutorial/namespaces.html