Is it possible to get the pointer the continous me

2019-02-25 13:22发布

问题:

I moved my code to use std::vector<char> instead of char *mem = malloc(...) but now I am facing a problem that I can only access the vector data through operator [] but not via a pointer.

I can't write stuff like:

std::vector<char> data;
fill_data(data);
char *ptr = data;

Before I could do this:

char *data = malloc(100);
fill_data2(data);
char *ptr = data;

Any ideas if it's still possible to access data in a vector via pointer?

Thanks, Boda Cydo.

回答1:

The standard way to access the vector data is to use

&data[0]


回答2:

Of course. The vector was designed for this purpose:

char * p = &(myVector[0]) ;

And now, p points to the first item in the vector, and you can access each item by playing with the pointer, as you would in C.



回答3:

You can write that code perfectly legally. All you need to do is alter fill_data to take a std::vector<T>&. Of course, if this is an external C API, then you don't have much choice in the matter.