In a previous tip, I discussed techniques for treating a vector object as an array. The two main forms of obtaining the internal array's address are:
&*v.begin(); // obtain address of first element
&v; // obtain address of first element
Several implementations now provide a special member function as a non-standard extension to the vector interface. This member function is called data(). As with string::data(), vector::data() returns a pointer to the beginning of the internal array that the object contains. The C++ standardization committee is currently reviewing various suggestions regarding vector's contiguity. One of the suggestions being considered is to add the data() member function into the standard. It's too early to predict whether data() will eventually make it into the standard so for the time being, you should use the techniques shown above for accessing a vector's internal array to ensure portability.