0
std :: advanceを使用して1つ以上のベクトルを反復しようとしています。デバッグビルドとリリースビルドの間には、のデバッグの違いがあり、実際のアプリケーションでもさらに拡張されたケースでもリリースが動作する間に、ベクトルイテレータ+オフセットが範囲外になります。なぜこれが起こり、どうすればデバッグで実行できるように書くことができますか?std :: advance - デバッグ時に範囲外のオフセットが発生しました
vector<glm::vec2> testV;
testV.push_back(glm::vec2(0.f));
int step = 2;
for (auto it = testV.begin(); it != testV.end();)
{
if (it + step <= testV.end())
advance(it, step);
else
++it;
}
(私はハングを起こしループで何かを印刷していない限り)、これはまた、イテレータのための加算演算子が返されたイテレータを検証している
for (auto it = testV.begin(); it != testV.end();)
advance(it, step);
*私はstd :: advance *を使って1つ以上のベクトルを反復しようとしています - これは0から 'testV.size()'への 'for'ループが良いオプション。 – PaulMcKenzie