If I have understood your question correctly, what you are really try to do is create an array of raw pointers from an array of thrust::device_vectors. You should be able to do this like so:
const int N = 10;
thrust::device_vector<int> iVec[N];
int * iRaw[N];
for(int i=0; i<N; i++)
iRaw[i] = thrust::raw_pointer_cast(iVec[i].data());
int ** _iRaw;
size_t sz = sizeof(int *) * N;
cudaMalloc((void ***)&_iRaw, sz);
cudaMemcpy(_iRaw, iRaw, sz, cudaMemcpyHostToDevice);
[disclaimer: written in browser, never compiled, never tested, use at own risk]
In the above code snippet, _iRaw holds the raw pointers of each of the device vectors in iVec. You could pass that to a kernel if you really wanted to.
device_vectoris a C++ class in host memory? An array ofdevice_vectoris an array of C++ class instances, also in host memory. There is no raw device pointer because there is no device memory involved.