我目前是C ++编程的新手,我正在尝试制作一个数独求解器。 但是,我遇到了返回单元格的候选列表的方法(单元格可能的值列表)。 候选列表是向量。这就是我目前尝试这样做的方式,但是它出现了一个错误:
int Cell::getCandidateList(void) const
{
int i;
for (vector<int>::iterator j = m_candidateList.begin(); j < m_candidateList.end(); j++)
{
i = *j;
}
return i;
}
这就是它在头文件中的声明方式:
int getCandidateList(void) const; //create method to get candidate list
错误似乎在m_candidateList.begin上,错误显示:
严重级代码描述项目文件行抑制状态 错误(有效)没有合适的用户定义转换来自&#34; std :: _ Vector_const_iterator&gt;&gt;&#34; to&#34; std :: _ Vector_iterator&gt;&gt;&#34;存在
答案 0 :(得分:1)
嗯,首先,你没有从这个函数返回一个向量,你只是重复重新分配一个整数值...: - (
但至于你得到的错误:你试图强制你的迭代器是一个非const向量迭代器,通过它可以修改元素 - 这不是你想要的。尝试:
for (vector<int>::const_iterator j = m_candidateList.begin(); j < m_candidateList.end(); j++)
或:
for (auto j = m_candidateList.begin(); j < m_candidateList.end(); j++)
或更好,使用C ++ 11语法:
for (const auto& e : m_candidateList) { }
...在这种情况下,在每次迭代中e
是对向量中连续整数的常量引用。