Редактировать: На следующий вопрос ответил this . У меня есть новый обновленный вопрос, является ли это более эффективным для использования: (мой друг сказал, что неэффективно помещать вектор вектора, потому что он использует последовательную память, и перераспределять, когда вы push_back означает, что требуется больше времени, чтобы найти место, где кусок памяти для всего большого вектора может быть размещен)
(где Picture - вектор линий, Line - вектор точек)
std::vector<Point> *LineVec;
std::vector<Line> PictureVec;
versus
std::vector<Point> LineVec;
std::vector<Line> PictureVec;
struct Point{
int x;
int y;
}
Я пытаюсь получить вектор вектора, и мой друг сказал мне, что неэффективно помещать вектор вектора, потому что он использует последовательную память, а вектор вектора будет занимать огромное количество места. Поэтому он предложил использовать вектор указателя-вектора. Поэтому внутренний вектор выглядит следующим образом. Очевидно, я очень плохо знаком с C ++ и был бы признателен за любые идеи.
struct Shape{
int c;
int d;
}
std::vector<Shape> *intvec;
Когда я хочу вернуться к этому, как бы я это сделал? Как то так?
Shape s;
s.c=1;
s.d=1;
intvec->push_back(s);
Кроме того, я написал итератор для прохождения, однако он, похоже, не работает, поэтому я считаю, что приведенный выше код не работает. Наконец, моя последняя проблема: хотя приведенный выше код работает, он дает действительно странные значения для моего вывода. Большие числа длиной 7 цифр и определенно не те значения, которые я ввел для s.c и s.d
for(std::vector<Shape>::iterator it=Shapes->begin();it<Shapes->end();it++){
Shape s = (*it);
std::cout << s.c << s.d << std::endl;
}