gpt4 book ai didi

c++ - 函数从收缩 vector 返回字符。 vector 为空时返回什么?

转载 作者:搜寻专家 更新时间:2023-10-30 23:53:27 26 4
gpt4 key购买 nike

我正在编写一个棋盘游戏,其中必须从袋子中随机抽取棋子(想象从袋子中抽出拼字游戏的棋子)。

我使用以下函数从 vector (代表袋子)中返回随机字符(代表碎片):

vector<char> pieces = {'A','B','C','D','E','F'};

char pullPiece() {
int randomIndex = rand() % pieces.size();
char c = pieces[randomIndex]; // Get the piece
pieces.erase(pieces.begin() + randomIndex); // Remove the piece
return c;
}

检索到 char 后,它会从 vector 中删除。然后该函数返回检索到的字符。

当 vector pieces 的所有元素都被删除并且为空时,处理对 pullPiece() 的调用的最佳方法是什么?

我唯一能想到的就是抛出异常,但由于每次玩我的游戏都会发生这种情况,所以它看起来不像是异常。我还考虑过在调用 pullPiece() 之前检查 vector 的大小,但我觉得我应该将此功能编程到 pullPiece() 函数本身中。

最佳答案

一个非常简单的方法是为空 case 返回 \0

从 vector 中返回一个 iterator 而不是 char 可能值得重构。然后您可以安全地返回 pieces.end()。这正是 C++ 标准库容器的做法。请注意,您可以测试 pieces.end() 的迭代器,但不要尝试取消引用该迭代器或递增它。 (只要容器不为空,您就可以递减设置为 pieces.end() 的迭代器)。

类 C 的方法是重构函数以返回一个 int,并为特殊值返回 EOF。 (参见isupperislower等)

关于c++ - 函数从收缩 vector 返回字符。 vector 为空时返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40991336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com