可以说我有下面的代码使用std ::以递增的迭代器找到
std::vector<char> myvector = {'u', 'd', 'l', 'r', 'u'};
std::vector<char>::iterator it;
std::cout << "vector size = " << myvector.size() << std::endl;
std::cout << "myvector.begin() = " << *(myvector.begin()+1) << std::endl;
it = find (myvector.begin() + 1, myvector.end(), *myvector.begin());
if (it != myvector.end())
{
myvector.erase(myvector.begin());
myvector.erase(it);
std::cout << "Found and deleted " << '\n';
std::cout << "vector size = " << myvector.size() << std::endl;
}
else
std::cout << "Element not found in myvector\n";
通过在这一行我得到一个分段错误使用myvector.begin() + 1
,我不知道为什么。
it = find (myvector.begin() + 1, myvector.end(), *myvector.begin());
通常我应该能够通过算术递增迭代器。我甚至尝试过其他解决方案,如std::advance
或std::next
,但没有成功。
有什么建议吗?
@And是的,我要实现的是检查元素有它复制和删除它们都
当您在调试器中运行程序时,哪行发生错误? – kfsone