Я получаю карту/задаю не вызывающую ошибку ошибки отладки в моем коде, и я понятия не имею, как ее исправить, я указал проблему на map.erase в моем Shape :: insert function, но я понятия не имею, как остановить проблему от какой-либо помощи. Спасибо.map/set nousedable после использования map.erase
Если я удаляю функцию стирания, она работает, но мне нужно ее, чтобы стереть элементы с карты, т используется теми функциями, больше
ShapeDraw.h
#ifndef _SHAPE_
#define _SHAPE_
#include <Windows.h>
#include <cmath>
#include <math.h>
#include <stdlib.h>
#include <map>
#include <algorithm>
#include <cstdlib>
#include <time.h>
#include <fstream>
#include <commdlg.h>
struct CardData
{
int _x;
int _y;
LPCWSTR _filename;
int _value;
int _suit = 0; //0 - Hearts, 1 - Diamonds, 2 - Spaces, 3 - Clubs
bool _face = 0; //0 - Face Down, 1 - Face Up <-- This bit is only used for adding the cards to the stacks and shit
};
struct cardStackList;
class Shape
{
public:
cardStackList *stack[11];
//extern cardStackList *stack[11];
//static HBITMAP mBkg;
int g_width = 10; //Default Pen Size is 10,
int g_pen = PS_SOLID;
int pCountMax = pCount;
int pCount = 0; //Painting Count
std::map<int, CardData> _cardMatrix;
std::map<int, CardData>::iterator _rCardIter;
cardStackList* make_stack();
void insert(cardStackList *_stack);
void CreateStacks();
cardStackList* remove(cardStackList *_stack); //Remove the top most card
cardStackList* search(cardStackList *_stack, int _value, int _suit);
void display(cardStackList *_stack); //Draw Cards in descending order
Shape()
{
for (int i = 0; i < 11; i++)
{
stack[i] = NULL;
}
}
};
#endif
ShapeDraw.cpp
#include "ShapeDraw.h"
struct cardStackList
{
int _x;
int _y;
LPCWSTR _filename;
int _value;
int _suit;
struct cardStackList *next;
struct cardStackList *prev;
bool _face; //0 - Face Down, 1 - Face Up
}*stack[11];
cardStackList* Shape::make_stack()
{
int i;
struct cardStackList *temp;
temp = new(struct cardStackList);
if (temp == NULL)
{
return 0;
}
else
{
i = rand() % (_cardMatrix.size());
_rCardIter = _cardMatrix.find(i);
temp->_x = _rCardIter->second._x;
temp->_y = _rCardIter->second._y;
temp->_filename = _rCardIter->second._filename;
temp->_value = _rCardIter->second._value;
temp->_suit = _rCardIter->second._suit;
temp->_face = _rCardIter->second._face;
temp->next = NULL;
temp->prev = NULL;
_cardMatrix.erase(_rCardIter);
pCount--;
pCountMax = _cardMatrix.size() + 1;
}
return temp;
}
void Shape::insert(cardStackList *_stack)
{
struct cardStackList *temp, *s, *t;
temp = make_stack();
s = _stack;
t = s;
if (_stack == NULL)
{
_stack = temp;
_stack->next = NULL;
_stack->prev = NULL;
}
else
{
while (s != NULL)
{
t = s;
s = s->next;
}
s = temp;
s->prev = t;
s->prev->next = s;
}
}
cardStackList *Shape::remove(cardStackList *_stack)
{
struct cardStackList *temp, *t, *return_card;
temp = _stack;
t = temp;
while (temp != NULL)
{
t = temp;
if (temp->next != NULL)
{
temp = temp->next;
}
else
{
temp = t;
}
}
temp = t;
return_card = temp->next;
temp->next = temp->next->next;
temp->next->prev = t;
return return_card;
}
cardStackList *Shape::search(cardStackList *_stack, int _value, int _suit)
{
struct cardStackList *temp;
temp = _stack;
while (temp->_value != _value && temp->_suit != _suit)
{
if (temp->next != NULL)
{
temp = temp->next;
}
}
if (temp != NULL)
{
return temp;
}
return NULL; //Only reaches this if the _value and _suit does not exist in that specific stack
}
void Shape::display(cardStackList *_stack)
{
struct cardStackList *_slot[11];
/*
slots 7 to 10 are the Ace Slots
*/
for (int i = 0; i <= 10; i++)
{
_slot[i] = stack[i];
}
for (int i = 0; i <= 10; i++)
{
while (_slot[i] != NULL)
{
}
}
}
void Shape::CreateStacks()
{
for (int i = 0; i < 7; i++)
{
insert(stack[0]);
}
for (int i = 0; i < 6; i++)
{
insert(stack[1]);
}
for (int i = 0; i < 5; i++)
{
insert(stack[2]);
}
for (int i = 0; i < 4; i++)
{
insert(stack[3]);
}
for (int i = 0; i < 3; i++)
{
insert(stack[4]);
}
for (int i = 0; i < 2; i++)
{
insert(stack[5]);
}
for (int i = 0; i < 1; i++)
{
insert(stack[6]);
}
//Stuff that creates the 7 stacks here
}
Пожалуйста, отправьте сообщение [mcve]. –