0

我对 C++ 感到困惑vector并寻求帮助。我声明一个类CBoundaryPoint

class CBoundaryPoint:
{
public:
    double m_param;
    int m_index;    
}

然后我定义一个vector

vector<CBoundaryPoint> vBoundPoints;
CBoundaryPoint bp;
double param;
// other codes
bp.m_param = param;
vBoundPoints.push_back( bp );

令我惊讶的是,对于 中的每个元素vBoundPoints, 的值m_param与给定的值参数完全不同。我只是不知道为什么。

例如:

param = 0.3356;
bp.m_param = param; // so bp.param equals to 0.3356;
vBoundPoints.push_back( bp ); // while (*(vBoundPoints.end()-1)).m_param = -6.22774385622041925e+066;  same case to other elements

那么发生了什么,为什么?我正在使用VS2010。

4

1 回答 1

1

size_type当您调整向量大小或使用构造函数创建特定大小的向量时,您可能会得到垃圾。您在向量中获得默认构造的对象,这些对象包含原始类型。由于您没有用户定义的默认构造函数,因此这些值本质上是随机的,或“垃圾”。

您可以通过向您的类添加默认构造函数来解决此问题:

class CBoundaryPoint:
{
public:
    CBoundaryPoint : m_param(), m_index() {} // initializes members to 0. and 0
    double m_param;
    int m_index;    
}
于 2012-08-02T14:41:36.647 回答