У меня возникли проблемы с получением правильного размера вектора с элементами структуры. Класс элемента определяется как это (я не опускать какие-либо детали, хотя я думаю, что релевантно только в том, что это класс, содержащий Int и два двухместных):размер std :: vector with struct elements
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. Что происходит? Разве размер() не должен точно возвращать количество элементов? Разве это не должно быть таким же, как arr.end() - arr.begin()?
Любой ответ и комментарий приветствуются.
Нет никакого способа узнать, что это сделает рабочая реализация вектора. Пожалуйста, покажите весь код, который вы используете, чтобы проверить это. –
Да, размер() должен равняться концу() - begin(); нам нужен лучший тестовый пример, чтобы понять, что происходит. – 2010-10-31 04:17:42
Не расплывчатый, будь тузом; научись писать правильный тестовый файл! http://sscce.org/ http://www.xs4all.nl/~weegen/eelis/iso-c++/testcase.xhtml http://tinyurl.com/so-hints – 2010-10-31 04:18:22