通过指针在函数之间传递向量

新手上路,请多包涵

有人建议我使用指针来添加一个我想从某个现有函数传递给另一个函数的向量。不过,我真的很困惑如何 该指针中获取信息。我已经尝试了很多我在这里和那里读过的东西,所以让我展示一下我在说什么。

初级程序:

 std::vector<float> * dvertex=NULL;

track.calculate(irrelevant stuff, dvertex)

二级程序(跟踪、计算)

 track::caclulate(irrelevant stuff, vector<float> * dvertex)
{
...
vector<float> pos;
... pos filled after some calculations
if(! (dvertex==NULL))
{
  dvertex = &pos1;
}

回到初级,除非我把上面的东西搞砸了,这是我尝试过的一些事情

1

 (*dvertex).at(0)
float z = (*dvertex).at(0)

2

 (*dvertex)[0]

还有一堆没有编译的东西。我很困惑,因为我不确定如何从主程序中的该向量中获取特定值。我什至认为它可能是 if(! (dvertex==NULL)) 位,所以我将其更改为 if(dvertex==NULL) 但仍然没有乐趣。任何帮助将不胜感激。

* 编辑/更新*非常感谢大家的帮助,但我担心我仍然做错了。

所以按照我只是通过参考的建议:我这样做了:

基本的

std::vector<float> dvertex;
track.calculate( foo, &dvertex);

次要保持不变(使用 !Null 检查)

基本的

std::cout<<dvertex[0]<<std:endl;

(在实际使用数据的其他尝试中)

非常感谢您对我仍然做的不正确的任何想法。一切都会编译,当程序到达使用来自 dvertex 的数据的程度时,程序就会冻结。

编辑:最终修复

在我需要的中学课程中

*dvertex = pos1;

代替

dvertex = &pos1;

原文由 shavera 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 377
1 个回答

如果您要修改向量,您可能只想通过引用传递它。但是,如果确实使用指针,则需要在 main 中定义一个向量,然后传递该向量的地址:

 void calculate(std::vector<float> *vertex_array) {
    vertex_array->pushback(1.0f);
    vertex_array->pushback(2.0f);
}

int main() {
    std::vector<float> vertexes;
    calculate(&vertexes);

    std::copy(vertexes.begin(), vertexes.end(),
        std::ostream_iterator<float>(std::cout, "\n"));
    return 0;
}

原文由 Jerry Coffin 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题