2016-05-12 3 views
-1

У меня есть список точек, а не указатели на точки, которые мне нужно опорожнить, не разрушая элементы. Вот что мне нужно сделать: я повторяю все точки в clipped, и если они соответствуют определенным критериям, я добавляю их в temp. Если они не будут, я могу или не могу выполнить какую-либо функцию для создания другой точки, которая затем добавляется к temp. После того, как все пункты в clipped были обработаны, я затем вычеркнул clipped, добавлю элементы от temp к нему, а затем выполните цикл снова, всего 4 раза. Моя проблема: как я выкидываю clipped, не затрагивая точки в temp? Есть эти пункты даже уничтожены, если я просто делаю clipped->clear()? Эта функция будет вызываться много раз, поэтому, если я просто сделаю clipped = new std::list<point>(), у меня закончится утечка памяти/переполнение стека?Как удалить список без уничтожения его элементов?

Точка представляет собой структуру, содержащую 3 целых числа: x, y и z;

+1

какой-либо код пожалуйста. показать использование, ожидаемое поведение с кодом. –

+0

_ «что мне нужно опорожнить, не разрушая элементы». _ Каков побочный эффект от разрушения элементов, которых вы на самом деле не избегаете? Или вам нужна копия информации? –

+0

_ «Я в итоге получаю утечку памяти/переполнение стека» _ Почему бы не попробовать и не посмотреть, что происходит? – emlai

ответ

3

Добавление точки в std::list<point> сделает копию . Так что да, очистка clipped уничтожит его очки, он не уничтожит копии, которые вы храните в temp. Вы можете действовать точно так, как планировалось.