есть 
C++ (Qt)
///////////////класс координаты (точки)
struct tabl
{
	tabl& tabl::operator = (const tabl &Other)
	{
		// Присваивание - не константный результат!!!!!
	this->x_tabl = Other.x_tabl;
	this->y_tabl = Other.y_tabl;
	this->x_widget = Other.x_widget;
	this->y_widget = Other.y_widget;
	return *this; 
	}
 
	inline bool tabl::operator == (const tabl &Other) const
	{
	// Равенство, константный метод
		return ((this->x_tabl == Other.x_tabl) && (this->y_tabl == Other.y_tabl )&& (this->x_widget==Other.x_widget) && (this->y_widget==Other.y_widget));
	}
	inline bool tabl::operator < (const tabl &Other) const
	{
		if(this->x_tabl == Other.x_tabl)
			return (this->y_tabl <Other.y_tabl);
 
		return (this->x_tabl < Other.x_tabl);
	}
 
double x_tabl;
double y_tabl;
double x_widget;
double y_widget;
tabl(){x_tabl=0; y_tabl=0; x_widget=0; y_widget=0;}
 
tabl(double x_tabl_,double y_tabl_,double x_widget_=0,double y_widget_=0)
{
	x_tabl = x_tabl_;
	y_tabl = y_tabl_;
	x_widget =x_widget_;
	y_widget = y_widget_;
}
 
 
};
 
//////////////////////////////////////////класс одной кривой
class Data
{
public:
	QVector<tabl>table;
 
 
	double maxX_graph_one;
	double minX_graph_one;
	double minY_graph_one;
	double maxY_graph_one;
	int count_point_in_tabl;
 
Data()
{
 
}
Data(QVector<tabl> table_)
{
 
	table=table_;
 
	defaultSettings();
 
 
 
 
}
void set_vector_table(QVector<tabl> table_)
{
	table = table_;
	 defaultTable();
}
void defaultTable()
{
	maxY_graph_one=table[0].y_tabl;
	minY_graph_one=table[0].y_tabl;
 
	minX_graph_one = std::min_element(table.begin(),table.end())->x_tabl;	
	maxX_graph_one = std::max_element(table.begin(),table.end())->x_tabl;
 
	for(int i=0;i<count_point_in_tabl;i++)
	{
	            if(maxY_graph_one <=(table[i].y_tabl)) maxY_graph_one=(table[i].y_tabl);
		if(minY_graph_one >= (table.at(i).y_tabl)) minY_graph_one = (table.at(i).y_tabl);
	}
}
};
 
//////////////класс координатной плоскости, где накладываются кривые
class SettingsGraph
{
public:
 
	double stepX;
	double stepY;
	double minX_graph_all;
	double minY_graph_all;
	double maxX_graph_all;
	double maxY_graph_all;
 
	QVector<Data> curves;
 
public:
SettingsGraph()
{
 
}
SettingsGraph(QVector<Data> curves_)
{
	if(curves_!=curves)
	curves = curves_;
 
 
 
}
void add_curves_one(Data graph_)
{
	curves.push_back(graph_);
	calculate_Min_Max();
 
}
void delete_curves_one(double number_)
{
	curves.remove(number_);
	calculate_Min_Max();
 
}
 
void calculate_Min_Max()
{
	int countGraph=curves.size();
	minX_graph_all=0;
	maxX_graph_all=0;
	minY_graph_all=0;
	maxY_graph_all=0;
 
	for(int i=0;i<countGraph;i++)
	{
		if(maxY_graph_all<=(curves[i].maxY_graph_one)&&curves[i].visible_graph_one) maxY_graph_all=(curves[i].maxY_graph_one);
 
		if(minY_graph_all>=(curves[i].minY_graph_one)&&curves[i].visible_graph_one) minY_graph_all=(curves[i].minY_graph_one);
 
		if(maxX_graph_all<=(curves[i].maxX_graph_one)&&curves[i].visible_graph_one) maxX_graph_all=(curves[i].maxX_graph_one);
 
		if(minX_graph_all>=(curves[i].minX_graph_one)&&curves[i].visible_graph_one) minX_graph_all=(curves[i].minX_graph_one);
 
	}
 
 
		if(minX_graph_all == maxX_graph_all&& minY_graph_all == maxY_graph_all)
		{
			defaultAces();
			return ;
		}
 
}
//////////////////////////////////////////////////////////////////////////////
Вопрос
при вызове add добавляются кривая, graph-объект класса SettingsGraph
C++ (Qt)
void Plotter::add(double x,double y)
{
	Data data_;
QVector<tabl> tabl_;
 
tabl_.push_back(tabl(x,y));
data_.set_vector_table(tabl_);
graph.add_curves_one(data_);
 
}
Проблема- при удалении крывой из вектора curves класса SettingsGraph происходит прикол
например, есть 2 точки (-1000,2) (3,100)
вызову 2 раза подряд add(-1000,2) add(3,100)
в итоге в curves будет 2 элемента
-      curves   [2]
-      
      +      table   [1]({x_tabl=-1000.0000000000000 y_tabl=2.0000000000000000 x_widget=0.00000000000000000 ...})   QVector<tabl>
      maxX_graph_one   -1000.0000000000000   double
      minX_graph_one   -1000.0000000000000   double
      minY_graph_one   2.0000000000000000   double
      maxY_graph_one   2.0000000000000000   double      
-      [1]         
+      table   [1]({x_tabl=3.0000000000000000 y_tabl=100.00000000000000 x_widget=0.00000000000000000 ...})   QVector<tabl>
      maxX_graph_one   3.0000000000000000   double
      minX_graph_one   3.0000000000000000   double
      minY_graph_one   100.00000000000000   double
      maxY_graph_one   100.00000000000000   double      
////////////////////////////////////////////
вызвав функцию graph.delete_curves_one(0);
получаю
-      curves   [1]
-      
+      table   [1]({x_tabl=3.0000000000000000 y_tabl=100.00000000000000 x_widget=0.00000000000000000 ...})   QVector<tabl>
      maxX_graph_one   -1000.0000000000000   double
      minX_graph_one   -1000.0000000000000   double
      minY_graph_one   2.0000000000000000   double
      maxY_graph_one   2.0000000000000000   double
Как решить прикол с вектором curves - удаление элементов происходит неправильно??