我正在使用Visual Studio2013。我正在尝试从 vector 获取子 vector :
std::vector <Ponto> pontosDeControle;
std::vector<Ponto> subPontosDeControle;
vector pontosDeControle充满了一些对象,然后我从位置i到pontosDeControle.size()-1获得子 vector :
subPontosDeControle = std::vector<Ponto>(&pontosDeControle[i], &pontosDeControle[pontosDeControle.size()]);
其中我小于pontosDeControle.size()-3。
这段代码返回调试断言失败: vector 下标超出范围。但是,在 Release模式下工作正常。
我在这里没有看到问题。
最佳答案
在 Debug模式下,编译器检查此表达式中使用的索引
pontosDeControle[pontosDeControle.size()]
超出范围。
你可以写
subPontosDeControle.assign( std::next( pontosDeControle.begin(), i ),
pontosDeControle.end() );
这将更加清晰和正确。
关于c++ - vector 下标超出范围-C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30417314/