View Single Post
  #1 (permalink)  
Old July 22nd, 2010, 02:36 AM
EliteHussar
Guest
 
Posts: n/a
Default C++ Tip : Treating a Vector as an Array

Suppose you have a vector of int and function that takes int *. To obtain the address of the internal array of the vector v and pass it to the function, use the expressions &v[0] or &*v.front(). For example:
Code:
void func(const int arr[], size_t length );  
int main()  
{  
 vector <int> vi;  
 //.. fill vi  
 func(&vi[0], vi.size());  
}
It’s safe to use &vi[0] and &*v.front() as the internal array’s address as long as you adhere to the following rules: First, func() shouldn’t access out-of-range array elements. Second, the elements inside the vector must be contiguous. Although the C++ Standard doesn’t guarantee that yet, I’m not aware of any implementation that doesn’t use contiguous memory for vectors. Furthermore, this loophole in the C++ Standard will be fixed soon.

Last edited by EliteHussar; July 22nd, 2010 at 02:57 AM..
Reply With Quote