Suppose I have the following:
class Test {};
Test a;
vector<Test> v;
v.push_back(std::move(a));
Basically,now a has been moved to the vector(so it is a part of the vector now),but,what happens if I try to access the original a?(not the one that is in the vector now?)
std::move is just a cast, converting "a" to an rvalue. Since Test does not implement an explicit move constructor, it's just copy constructed. And since Test has no members, that's a no-op.
Standard library objects that are moved are generally specified to become objects that you cannot do anything with but destroy. Some standard classes may have more defined semantics, and in many cases the use of a moved from object can be predictably relied upon. However, any classes you write can have whatever state after a move that you code up. Those semantics are dictated by your implementation of the move constructor.
Another thing to be aware of when using moveable objects with an std::vector is that the noexcept state of the move constructor can effect when objects can be moved on reallocation. So if you write an object that can be moved and put in a vector, remember to specify if it cannot throw.