C 数组索引
C++ Array Index
我正在尝试在C 中制作一个黑色插孔,但是限制之一是卡片的数组必须同时包含卡的西装和价值,即2H,3H,2C,3C等。我该怎么做?
为Suits
创建enum
enum Suits { Spades, Clubs, Diamonds, Hearts };
为Card
创建class
class Card
{
private:
Suits suit;
int value;
public:
Card(Suits s, int v);
};
Card::Card(Suits s, int v)
{
suit = s;
value = v;
}
在main
中创建您的数组(或vector
) int main(int argc, char const *argv[])
{
int size = 6, total_colors = 4, total_values = 13;
std::vector<Card> v;
// Fill the vector with random cards
for (int i = 0; i < size; i++)
v.push_back(Card((Suits)(i % total_colors), i % total_values));
return 0;
}
注释
- 这将使您仅使用一个索引来操纵卡。比为每个属性创建单独的数组
Card
可能具有更干净,更可维护的。 -
Card((Suits)(i % total_colors), i % total_values)
将基于 indexi
创建Card
,您可能需要更改逻辑,因此它适合您的用例。
,所以这类似于您表示矩阵的方式,除了每行都代表西装。
如果我在每一行中都有ACE->王,则行的长度为13。那么您可以将每个西装分配给特定行。例如,心脏可能是0,钻石1,黑桃2和俱乐部3。
为了索引这些值中的任何一个,假设您命名了数组卡,则仅是卡片[西装 * 13 card]。因此,例如,如果我想要2颗钻石的2个,则将其索引为卡片[1 * 13 1],因为2是Row Diamond的第二张卡片(假设ACE为索引0)。<<<<<<<<<<<</p>
您甚至可以为西服做一个枚举,以便计算看起来像卡片[钻石 * 13 1]。此外,您可以将另一个枚举用于卡片,以进一步简化卡片的索引[钻石 * 13 两个]。
相关文章:
- 特征获取索引数组,其中向量中的值为真(不需要循环)
- 是否可以使用字符串或字符索引数组
- 为什么在使用字符索引数组时会出现这种不同的行为
- 在具有重复索引的索引数组处更改 ArrayFire 数组
- 使用索引数组订购 ArrayFire Array 的最佳方式
- C++ 中结构的动态索引数组
- 1索引数组上的qsort()正在扰乱索引
- C++ 索引数组打印和删除字符串名称 数组打印
- 字符串下标超出范围.我不知道如何使用字符索引数组,所以我使用了(无符号整数),但它不起作用
- openGL drawElements - 一个额外的三角形,使用索引数组
- 具有索引数组的地形(高度贴图)LOD
- 通过创建索引数组进行 C++ 排序
- OpenGL:两个顶点数组 + 两个索引数组
- 将索引数组排序为主数组
- 自动循环跳过某些索引数组
- 为静态强制转换的索引数组生成数组
- 重载枚举索引数组的std::get
- 使用c++中的第二个索引数组对数组进行排序
- 给定的零索引数组 &该数组的均衡索引
- CUDA:重新索引数组