我有以下 C++ 函数:
std::vector<int> findPoss (std::vector<int>& possRow, std::vector<int>& possCol)
{
std::vector<int> poss;
for (int a = 0; a < 9; a++)
for (int b = 0; b < 9; b++)
if (possRow[a] == possCol[b])
poss.push_back(possRow[a]);
return poss;
}
它应该采用两个 a 向量,并返回一个包含在两个输入向量中找到的所有元素的向量。
但是,返回的向量总是包含 1。例如,如果我输入了这个:
std::vector<int> possRow;
for (int a = 0; a < 9; a++) possRow.push_back(a);
std::vector<int> possCol;
for (int b = 0; b < 9; b += 2) possCol.push_back(b);
findPoss(possow, possCol)
它会返回这个:
(0, 1, 2, 4, 6, 8)
为什么会这样?
此外,在我的findPoss
函数中,没有任何内置函数可以将两个for
循环合二为一,是吗?