无法返回矢量数组c ++

时间:2017-03-31 15:50:05

标签: c++ vector

我是C ++的新手,很抱歉,这是一个简单的问题!

我目前正在制作数独求解器。每个单元格都有一个候选列表,它是一组可能的值。候选者通过删除同一行,列和块上的值来减少,直到最终候选列表中只有一个单值,这将是单元格的新求解值。

我有那部分工作,但是细胞可以解决的另一种方式是'隐藏价值'。通过将单元格的候选列表与单元格的行,列或块中的候选列表进行比较,可以找到隐藏值。如果当前单元格的候选列表中有一个值,而在其他任何列表中都找不到,则该值必须是单元格的求解值。

我遇到的问题是返回单元格的候选列表,以便我可以将其与其他人一起返回。

我有一个单元格类和一个单元格类。单元组基本上是行,列或块。每组包含9个细胞。

单元格组中,我有以下方法:

 int CellGroup::checkHiddenSinglesRow(Cell * cell) const
{
int candidateList[] = { cell->getCandidateList() }; //not returning correctly

 int hiddenSingle = 0;
for (int i = 0; i < 9; ++i)
{
    Cell *cells = m_cells[i];
    bool found = cells->SearchCandidateList(value);
    if (found == true) {

        hiddenSingle = hiddenSingle + 1;
    }
}
return hiddenSingle;

}

搜索候选方法基本上通过单元格候选列表,如果找到值在单元格类中,则返回true:

 bool Cell::SearchCandidateList(int value) {
bool found;
auto it = find(m_candidateList.begin(), m_candidateList.end(), value);
if (it != m_candidateList.end()) {
    found = true;
}
else {
    found = false;
}
return found;

}

这是我用来返回当前单元格候选列表的方法,在单元格类中:

   int Cell::getCandidateList(void) const
 {
for (auto i = m_candidateList.begin(); i != m_candidateList.end(); ++i) {
    int j;
    j = *i;
    return j;
}


}

getCandidateList返回1,这可能是候选列表中的第一个值。 将列表作为数组返回可能很有用,这样我就可以比较其中的值,但是我不确定如何实现它。

任何帮助都会受到大力赞赏!

谢谢露西

1 个答案:

答案 0 :(得分:0)

您可以返回这样的矢量:

std::vector<int> Cell::getCandidateList() const
{
    return m_candidateList;
}