获取指向矢量C ++的指针

时间:2014-10-01 09:03:28

标签: c++ vector

这是关于指针的第二个基本问题。 我正在调用DLL中公开的函数..

正在声明一个向量,并使用该函数内的值填充。

我需要循环遍历向量并从调用函数中访问它的值。

int calling_function()
{
int* vectorSize;
string input = "someValue";
vector<customObjects> *v;// do i need a pointer to a vector here?

void function_being_called(input,v,&vectorSize);

//need to access the vector here...

}

void function_being_called(string input, void *returnValue, int* vectorSize)
{
vector<customObjects> v;
v.push_back(myObj);

*vectorSize= v.size();

*returnValue = ? // how to pass vector to the calling function through this parameter pointer variable

return;
}

2 个答案:

答案 0 :(得分:2)

应该是这样的:

int calling_function()
{
  string input = "someValue";
  vector<customObjects> v;

  function_being_called(input,&v);

  // access the vector here...

}

void function_being_called(string input, vector<customObjects>* v)
{
  v->push_back(myObj);
}

答案 1 :(得分:1)

你有两个选择。首先,传递矢量作为参考:

string input = "someValue";
vector<customObjects> v;
function_being_called(input, v);

void function_being_called(string input, vector<customObjects> &v)
{
 // Whatever
}

或者,如果您正在使用C ++ 11,只需返回vector并让移动构造函数处理它:

string input = "someValue";
vector<customObjects> v =  function_being_called(input);

vector<customObjects> function_being_called(string input)
{
  vector<customObjects> v;

 // Whatever

  return v;
}