我正试图从矢量向量中提取int的所有组合。所以我使用了另一个主题中的函数:
void Phrase_Structuration::printAll(const vector<WORD_AND_TYPE> &allVecs, size_t vecIndex, int strSoFar)
{
if (vecIndex >= allVecs.size())
{
cout << "FINISHED POSSIBILITY : ";
cout << strSoFar << endl;
return;
}
for (size_t i = 0; i<allVecs[vecIndex].types.size(); i++)
printAll(allVecs, vecIndex + 1, strSoFar + allVecs[vecIndex].types[i]);
}
问题是我不打算打印可能的解决方案的添加,但我不想在新的矢量中: vector&lt;矢量&lt; WORDS_TYPE&GT; &gt; 。
WORD_AND_TYPE是字符串和枚举的结构(它是一个整数)。
WORDS_TYPE是枚举名称。
因此输出atm是:
68
74
74
我希望将添加的每个部分放在一个新的向量中,如:
vector.at(0)= {29,29,10}
vector.at(1)= {35,29,10}
vector.at(2)= {29,35,10}
等等。
如果有人可以帮助我,这将是非常棒的,因为递归对我来说是一种新的东西。如果您有任何疑问,请不要犹豫
编辑:
我已经做到了这一点,但这只做了半部分工作(它没有给出各种可能性)......
void Phrase_Structuration::printAll(const vector<WORD_AND_TYPE> &allVecs, vector<WORDS_TYPE> &tmpVector, vector<vector<WORDS_TYPE>> &phraseWordsTypesVector, size_t vecIndex, int strSoFar)
{
if (vecIndex >= allVecs.size())
{
cout << "FINISHED POSSIBILITY : ";
tmpVector.clear();
cout << strSoFar << endl;
return;
}
for (size_t i = 0; i < allVecs[vecIndex].types.size(); i++)
{
//cout << "Vec : " << vecIndex << endl;
tmpVector.push_back(allVecs[vecIndex].types[i]);
printAll(allVecs, tmpVector, phraseWordsTypesVector, vecIndex + 1, strSoFar + allVecs[vecIndex].types[i]);
tmpVector.push_back(allVecs[vecIndex].types[i]);
phraseWordsTypesVector.push_back(tmpVector);
// cout << "Vector : " << vecIndex << endl;
}
}
编辑2:以下是当前输出的屏幕截图:http://www.hostingpics.net/viewer.php?id=904380basicoutput.png