是否可以将内存位置从迭代器存储到指针中?

时间:2013-09-13 00:45:11

标签: c++ pointers vector

我有一组球队,每个球队都有球员。我需要让所有玩家都进入一个向量,这样我就可以对它们进行排序并显示它们。我只需要知道如何取vectorOfTeams[i].getVectorOfPlayers()[j]并将其转换为播放器的内存位置以存储到新数组中。不幸的是,这是我学校的作业,我不允许在任何地方发布代码。希望我有意义。

2 个答案:

答案 0 :(得分:0)

您可以构建一个指向玩家的指针向量std::vector<Player*>,使用&vectorOfTeams[i].getVectorOfPlayers()[j]填充指向所有团队所有玩家的指针,如Vaughn Cat所述,并对此指针向量进行排序使用std::sort和自定义比较器的玩家。

由于您将在此处理指针,因此请确保所有实际的 Player对象仍然存在,即确保它们不是局部变量,而是动态创建,例如。

答案 1 :(得分:0)

在大多数直截了当的想法中,&(somePlayerVector[i])应该给你一个“有效”的地址。

您可能会发现它适用于大多数情况,但这不是保持指针的理想方式。

Player仅在访问时保证存在。有很多事情可能会出错:vector可以重新分配,然后内存位置不再有效。

更安全的方法是在目标数组中保留另一个Player对象,该对象是原始向量中Player的副本,这样您将不再访问该向量的内部数据得到Player

的路线