У меня возникли проблемы с получением правильного размера вектора с элементами структуры. Класс элемента определяется следующим образом (я не упустил ни одной детали, хотя думаю, что единственный существенный факт заключается в том, что это класс, содержащий int и два числа типа 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()?
Любой ответ и комментарий приветствуется.