【发布时间】:2015-10-18 06:27:15
【问题描述】:
在我的一个 C++ 项目中,我使用 vector 来保存一堆 structs,其中包含一些简单游戏的元素(即:井字游戏、坐标、x与o 等)。即:
struct gameMove
{
int x;
int y;
int player;
int order;
};
在单场比赛中,每当玩家移动时(即:放置x 或o),信息通过push_back() 存储在vector 中,以创建“撤消”功能,目前按预期工作。
在我的撤消/重做逻辑的某些部分,我使用了遍历vector、找到适当元素并直接返回指向该元素的指针的函数。
只要我正确地管理vector,访问它,将所有指向vector 元素的指针清空,它是否安全,或者是否存在固有风险?我担心的是,如果扩展我计划做的游戏(即:对我正在开发的国际象棋游戏使用相同的代码),并且vector 变得太大,需要自动重新分配,指针将变得无效(即:整个列表被移动到一个可以容纳所有元素的新连续块),或者是否有某种类型的智能指针接口到 vector 来完成同样的事情?
谢谢。
【问题讨论】:
标签: c++ vector stdvector type-safety