我爲我的道路點創建了一個多圖。關鍵是指道路編號,值是構成道路的vec3點。迭代器中的段錯誤
我試圖遍歷每個關鍵點的值,並在道路上的每個點(除最後一個)上創建一個路段,將值調整到道路點上,然後將它們存儲在std中: :向量。
的RoadSegment構造函數創建6個VEC3點和推動它們到一個std ::向量。
我有一個分段故障在標誌着線粗體 [對於(mapit地圖= it.first; mapit地圖= it.second;!++ mapit地圖)]
當我取出創建新的線對象並將它們推到std :: vector上,它工作正常。
誰能告訴我是什麼問題/解決問題的解決方案?
提前感謝
std::vector<glm::vec3>::iterator SegIt;
for(int i = 0; i < m_genRoads->getKeyValueData().size(); i++)
{
int numberDesired = m_genRoads->getMultimapData().count(i) - 1;
std::multimap<int, glm::vec3>::iterator mapIt;
std::pair<std::multimap<int, glm::vec3>::iterator, std::multimap<int, glm::vec3>::iterator> it;
it = m_genRoads->getMultimapData().equal_range(i);
for(mapIt = it.first; mapIt != it.second; ++mapIt)
{
int distance = std::distance(it.first, mapIt);
if(distance != numberDesired)
{
RoadSegement* roadSegmentPointer = new RoadSegement();
// FUNCTIONS TO ADJUST COORD VALUES TO MATCH THE ROAD POINTS
m_segmentArray.push_back(roadSegmentPointer);
}
else
{
continue;
}
///SOME BUFFER BINDING STUFF
可能與++ mapit地圖你出去你的地圖的空間。嘗試在mapit地圖++ –
改變我只是想這一點,但沒有奏效....仍然給分段錯誤 – willgosling
@FrankCunningham:'++ mapIt'和'mapit地圖++'* *做同樣的事情;唯一的區別是表達式的值(在增量之前或之後),這個代碼忽略了這個值。 –