收到有关 _Vector_const_iterator 无法转换为 _Vector_iterator 的错误
Getting an error about a _Vector_const_iterator not being convertible to a _Vector_iterator
我目前是 C++ 编程的新手,我正在尝试制作一个数独求解器。
但是,我在使用 returns 单元格的候选列表(单元格可能的值列表)的方法时遇到了问题。
候选列表是一个向量。这就是我目前尝试这样做的方式,但是出现错误:
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 上,错误说:
严重性代码说明项目文件行抑制状态
错误(活动)不存在从 "std::_Vector_const_iterator>>" 到 "std::_Vector_iterator>>" 的合适的用户定义转换
嗯,首先,你不是从这个函数返回一个向量,你只是重复地重新分配一个整数值...:-(
但至于您收到的错误:您试图强制您的迭代器成为非常量向量迭代器,通过它可以修改元素 - 这不是您想要的。尝试:
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
是对向量中连续整数的常量引用。
我目前是 C++ 编程的新手,我正在尝试制作一个数独求解器。 但是,我在使用 returns 单元格的候选列表(单元格可能的值列表)的方法时遇到了问题。 候选列表是一个向量。这就是我目前尝试这样做的方式,但是出现错误:
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 上,错误说:
严重性代码说明项目文件行抑制状态 错误(活动)不存在从 "std::_Vector_const_iterator>>" 到 "std::_Vector_iterator>>" 的合适的用户定义转换
嗯,首先,你不是从这个函数返回一个向量,你只是重复地重新分配一个整数值...:-(
但至于您收到的错误:您试图强制您的迭代器成为非常量向量迭代器,通过它可以修改元素 - 这不是您想要的。尝试:
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
是对向量中连续整数的常量引用。