除了需要两点帮助之外,我的代码几乎完成了。这是我的代码:Code。对于下面的函数,我正在尝试使其能够使用“n”输入来初始化数组myBits而不是常量(当前为5)。

我的其他问题就在下面。我正在尝试将所有正确的位都切换为“true”。我在“/ * ..... * /”中编写了for循环,但似乎无法正常工作。就在它上面,我对C(5,4)....(myBit [0] = myBit [1] .... etc ......(...我正在用它来找到r-字符串的组合)...似乎有效,任何帮助将不胜感激!

void nCombination(const vector<string> &Vect, int n, int r){

    bool myBits[5] = { false };  // everything is false now
        myBits[1] = myBits[2] = myBits[3] = myBits[4] = true;

/*  for(int b = n - r - 1; b = n - 1; b++){
        myBits[b] = true;  // I am trying to set the r rightmost bits to true
    }
*/
    do  // start combination generator
    {
       printVector(Vect, myBits, n);
    } while (next_permutation(myBits, myBits + n));  // change the bit pattern
 }

最佳答案

这些称为可变长度数组(简称VLA),它们不是标准C++的功能。这是因为我们已经有了可以更改其长度的数组:std::vector。使用它而不是数组,它将起作用。

关于c++ - 初始化大小可变的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27304694/

10-11 18:13