構造体要素を含むベクトルの適切なサイズを取得するのに問題があります。要素クラスは次のように定義されます(唯一の関連する事実は、intと2つのdoubleを含むクラスであると思いますが、詳細は省略しませんでした):
class Interval
{
public:
Interval(int _i = 0, scalar _l = 0, scalar _r = 0) :
index(_i),
l(_l),
r(_r)
{ }
inline double left(void) const { return l; }
inline double right(void) const { return r; }
inline bool operator < (const Interval & i2) const { return left() < i2.left(); }
public:
int index;
double l;
double r;
};
次に、関数に次のコードがあります。
std::vector<Interval> arr(10);
int s1 = arr.size();
int s2 = arr.end() - arr.begin();
私が得るs1の値は15ですが、s2は正しい値10です。何が起こっているのでしょうか。size()は正確に要素の数を返すことになっているのではありませんか?arr.end()-arr.begin()と同じではないですか?
任意の応答とコメントをいただければ幸いです。