【问题标题】:Setting an element of an array equal to an entire array c++将数组的元素设置为等于整个数组c ++
【发布时间】:2018-05-03 03:15:30
【问题描述】:

我正在制作一副宾果卡。牌组知道牌组中牌的数量、牌的大小以及牌上出现的最大张数。

我想创建 n 个由唯一随机整数组成的数组(卡片),然后将这些数组中的每一个添加到另一个数组(卡片组)的每个元素中。所以,一个数组数组。

例如。

card1 = {1, 2, 5};
card2 = {3, 7, 2};
deck = {card1, card2};

到目前为止,这是我的代码:

Deck::Deck(int cardSize, int cardCount, int numberMax){
    int randInt;
    int size = cardSize * cardSize;
    int deckArr[cardCount];
    for(int t = 0; t < cardCount; t++){
        int arr[size];
        for(int i = 0; i < size; i++){
            randInt = computeRandInt(numberMax, cardSize);
            if(arr[i] == 0) arr[i] = randInt;
            else if (randInt != arr[i-1]) arr[i] = randInt;
        }
        deckArr[t] = arr;
    }
}

我收到从“int*”到“int”的错误无效转换。如何声明我的牌组数组来存储这些牌组?

【问题讨论】:

  • int deckArr[cardCount] -- int arr[size]; -- 这不是有效的 C++。 C++ 中的数组必须使用常量来表示条目数,而不是变量。请改用std::vector&lt;int&gt;

标签: c++ arrays


【解决方案1】:

在 C++ 中,您可以通过嵌套向量来处理数组数组,例如vector&lt;vector&lt;int&gt;&gt; 为您的 deckArr。请注意,deckArr 实际上应该是Deck 的成员(而不是局部变量);只是稍微修改了您的代码以显示嵌套向量的想法:

Deck::Deck(int cardSize, int cardCount, int numberMax){
    int randInt;
    int size = cardSize * cardSize;
    vector<vector<int>> deckArr(cardCount);
    for(int t = 0; t < cardCount; t++){
        vector<int> arr(size);
        for(int i = 0; i < size; i++){
            randInt = computeRandInt(numberMax, cardSize);
            if(arr[i] == 0) arr[i] = randInt;
            else if (randInt != arr[i-1]) arr[i] = randInt;
        }
        deckArr.push_back(arr);
    }
}

【讨论】:

  • 谢谢。那么如何在另一个打印函数中访问卡片组向量以打印出每张卡片?
猜你喜欢
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多