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

问题描述 投票:-3回答:2

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

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

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

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

c++ struct
2个回答
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
投票

总有一个简单的解决方案。

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

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

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

魔术发生在&符号&上,这使得card成为参考。因此,对变量card的任何赋值都会影响数组中的原始卡。

© www.soinside.com 2019 - 2024. All rights reserved.