954,498 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

passing vector to a pointer?

I have a project where I must use pointers to do a search on some accounts I've built up into a vector. My problem is whenever I try to pass the vector to a pointer I get an error. I've tried many different things but to no avail. Maybe one of you can tell me what I'm doing wrong?

This is basically what I'm trying to do:

#include <vector>
using namespace std;

double * func()
{
vector<double> vec;
return vec;
}

int main()
{double * p;
p=func();

return 0;
}


The error I get:test.cpp: In function `double* func()':
test.cpp:7: cannot convert `std::vector >' to `
double*' in return

XxAndyxX
Newbie Poster
11 posts since Apr 2005
Reputation Points: 10
Solved Threads: 0
 
double * func()
{
vector<double> vec;
return vec;
}


I don't think there is a typecast for double to vector. What you should do is use a pointer to a vector variable:

vector<double> * func()
{
     vector<double> vec;
     return vec;
}


That should work, but no guarantees since I didn't test it. Also, you may wish to change your double pointer in main() to a pointer to vector.

Now, if you are trying to use the pointer to double for data in the vector, you may wish to just use an iterator.

marinme
Junior Poster in Training
63 posts since Apr 2005
Reputation Points: 10
Solved Threads: 1
 

For this assignment we are required to use a pointer to search through an array (or vector) of accounts. Why doesn't this work?

vector<account> vec_account; //creates a vector of accounts
vector<account> * p; //creates a pointer to a vector of accounts
get_accounts(vec_account); //fills the vector with accounts
p=vec_account; //stores the base address of the vector into the pointer -but I get an error?  Logically it makes since to me...

ERROR I GET IS:
code.cpp:266: cannot convert `std::vector<account, std::allocator<account> >'
   to `std::vector<account, std::allocator<account> >*' in assignment


Here is the search algorithm I'll be using to search through the vector of accounts:

for (match=0; p <  (p+v.size()) && match==0; ++p)
  if (acct_num==p->read_acct_num()) match=1      //acct_num is given by the user
i--;
if (match==0) cout<<"\n\tACCOUNT NUMBER DOES NOT EXIST!\n";
else {
XxAndyxX
Newbie Poster
11 posts since Apr 2005
Reputation Points: 10
Solved Threads: 0
 

It should work just using
p = &vec_account;

marinme
Junior Poster in Training
63 posts since Apr 2005
Reputation Points: 10
Solved Threads: 1
 
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;

vector<double> *func()
{
   static const double init[] = {1.0,1.5,2.0,3.3};
   vector<double> *vec = new vector<double>(init, init + sizeof init / sizeof *init);
   return vec;
}

int main()
{
   vector<double> *p = func();
   copy(p->begin(), p->end(), ostream_iterator<double>(cout, "\n"));
   return 0;
}

/* my output
1
1.5
2
3.3
*/
Dave Sinkula
long time no c
Team Colleague
5,058 posts since Apr 2004
Reputation Points: 2,780
Solved Threads: 314
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You