Я работаю над уже существующим кодом и проверяет, работает ли он.Откат элементов в C++ std :: vector, они теряют информацию
С величайшим удивлением, эти основные классы дают мне неприятность
typedef int Id;
typedef int BcId;
//! This class gives some common methods to all mesh objects.
class Identifier{
public:
static const UInt NVAL;
Identifier(UInt id):id_(id),bcId_(NVAL){}
Identifier(UInt id, UInt bcId):id_(id),bcId_(bcId){}
bool unassignedId()const {return id_==NVAL;}
bool unassignedBc()const {return bcId_==NVAL;}
Id id() const {return id_;}
BcId bcId() const {return bcId_;}
Id getId() const {return id_;}
protected:
Id id_;
BcId bcId_;
};
//! This class implements a 3D point, the default is z=0 => 2D point
class Point: public Identifier{
public:
static const UInt ndim = 3;
Point(): Identifier(NVAL, NVAL){coord_.resize(3);};
Point(Real x, Real y, Real z=0):Identifier(NVAL, NVAL)
{coord_.resize(3);coord_[0]=x; coord_[1]=y; coord_[2]=x;}
Point(Id id, BcId bcId, Real x, Real y, Real z=0):Identifier(id, bcId)
{coord_.resize(3);coord_[0]=x; coord_[1]=y; coord_[2]=z;}
void print(std::ostream & out) const;
Real operator[](UInt i) const {return coord_[i];}
private:
std::vector<Real> coord_;
};
void Point::print(std::ostream & out) const
{
out<<"Point -"<< id_ <<"- "<<"("<<coord_[0]<<","<<coord_[1]<<","<<coord_[2]<<")"<<std::endl<<"------"<<std::endl;
}
Теперь простейшим тест:
int main()
{
Point a(1,1,0,0);
Point b(2,2,0,1);
Point c(3,3,1,0);
a.print(std::cout);
b.print(std::cout);
c.print(std::cout);
std::cout<<b.getId()<<std::endl;
b.print(std::cout);
std::vector<Point> points;
points.resize(3);
points.push_back(c);
points.push_back(b);
points.push_back(a);
std::cout<<"The points are"<<std::endl;
for (int i=0; i<3; ++i)
points[i].print(std::cout);
std::cout<<std::endl;
}
Я получаю результат:
Point -1- (0,0,0)
------
Point -2- (0,1,0)
------
Point -3- (1,0,0)
------
2
Point -2- (0,1,0)
------
The points are
Point -2147483647- (0,0,0)
------
Point -2147483647- (0,0,0)
------
Point -2147483647- (0,0,0)
Что вы думаете об этом 'points.resize (3);'? – Danh
Подсказка: 'for (int i = 3; i <6; ++ i)' – George
Так чертовски глупо :) – user5609462