c ++重置结构数组的结构成员

时间:2018-01-03 22:19:17

标签: c++ struct

所以我有一个包含结构数组的结构,我想知道如何在不重置第一个结构的其余成员的情况下重置结构数组。 这是我的结构代码:

struct Card {
    int value;
    char type[10];
};

struct Wallet {
    double money;
    Card cards[11];
    int cardIndex;
};

到目前为止,我已经尝试了delete[]memset,但两者似乎都没有效果。任何建议将不胜感激

2 个答案:

答案 0 :(得分:2)

您可以考虑使用std :: vector代替:

struct Wallet {
    double money;
    vector<Card> cards;
    int cardIndex;
};

然后你可以使用std :: vector的clear()或oder assign()方法或者只是它的赋值运算符。

但如果你坚持使用固定大小的数组,你可以使用<algorithm>标题中的std :: fill

代表

struct Wallet {
    double money;
    Card cards[11];
    int cardIndex;
    void reset() { std::fill(cards, cards+11  Card{}); }
};

答案 1 :(得分:1)

始终是简单的解决方案。

for (int i = 0; i < 11; i++) {
  wallet.cards[i] = Card();
}

或者,正如@Cheers在注释中所说,您可以使用基于范围的for循环让编译器自动确定边界。这样更安全,因为你不能错误地使用错误的数组大小。

for (Card& card : wallet.cards) {
  card = Card();
}

&符号&带来了魔力,这使card成为引用。因此,对变量card的任何赋值都会影响数组中的原始卡。