A vector is explicitly not an array. It's an opaque containter, that's a very important design decision. Any approach that would allow you to do what you want would have to compile on most hardware to either accesses in a memory buffer or exactly what you would do as a work around. I'd be prone to say it should stay as a workaround in code rather than pretending it's a more efficient operation than it really is.
You can use the shuffle function which is provided by OpenCL to do this for you. Dynamic indexing into a vector is not allowed because a vector is a single unit and not an array.