将指针向量传递给c ++中的函数[重复]
Posted
技术标签:
【中文标题】将指针向量传递给c ++中的函数[重复]【英文标题】:Pass a vector of pointers to function in c++ [duplicate] 【发布时间】:2019-11-29 16:54:33 【问题描述】:我在这里看到了很多帖子,但没有一个能解释我想要做什么。
我有向量vector <Car*> carVector;
,我想将它传递给一个函数,以便我可以读取其中对象的信息。
目标是通过它,然后我可以在这个 cicle 中使用它
for (i = 0; i < racetrack.size(); i++)
for (int j = 1; j < nRaceTracks + 1; j++)
if (racetrack[i]->getNome() == info[j])
size= racetrack[i]->getTrackSize() / 100;
for (int c = 0; c < carVector.size(); c++)
carVector[c]->chargeBattery(500);
【问题讨论】:
您遇到了什么问题?请显示功能和您尝试过的内容。void Foo(vector<Car*> carVector) ...
你必须更具体。传递指针向量并没有什么特别之处。
接收向量的函数是void Campeonato::criaCampeonato(string* info, vector<Car*> *carVector, vector<racetrack*> *racetrack)
,但我不知道我是否以正确的方式传递向量
你为什么要传递一个指向向量的指针?通过值或引用传递向量本身(如果您希望调用者看到更改)。如果您不想复制或修改向量,也可以通过常量引用传递。
【参考方案1】:
对于您提到的函数,只需根据情况通过值、引用或常量引用传递向量,如下所示:
值:
void Campeonato::criaCampeonato(string* info, vector<Carro*> vectorCarro, vector<Autodromo*> *vectorAutodromo)
参考:
void Campeonato::criaCampeonato(string* info, vector<Carro*>& vectorCarro, vector<Autodromo*> *vectorAutodromo)
常量参考:
void Campeonato::criaCampeonato(string* info, const vector<Carro*>& vectorCarro, vector<Autodromo*> *vectorAutodromo)
如果您必须将其作为指针传递,那么您可以在函数中取消引用它以将其用作数组,如下所示:
void Campeonato::criaCampeonato(string* info, vector<Carro*> *vectorCarro, vector<Autodromo*> *vectorAutodromo)
for (i = 0; i < racetrack.size(); i++)
for (int j = 1; j < nRaceTracks + 1; j++)
if (racetrack[i]->getNome() == info[j])
size= racetrack[i]->getTrackSize() / 100;
for (int c = 0; c < carVector.size(); c++)
(*vectorCarro)[c]->chargeBattery(500);
【讨论】:
【参考方案2】:从您在 cmets 中给出的 sn-p 中,您正在尝试传递指针。你不想这样做。您需要参考:
void Campeonato::criaCampeonato(string *info, const vector<Car*> &carVector, const vector<racetrack*> &racetrack)
for (size_t i = 0; i < racetrack.size(); i++)
for (int j = 1; j < nRaceTracks + 1; j++) // you will need to pass nRaceTracks in too
if (racetrack[i]->getNome() == info[j])
size= racetrack[i]->getTrackSize() / 100;
for (size_t c = 0; c < carVector.size(); c++)
carVector[c]->chargeBattery(500);
【讨论】:
以上是关于将指针向量传递给c ++中的函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章
C ++将向量传递给函数:引用与指针,哪个是首选? [复制]