2014-01-14 3 views
0

Теперь я использую некоторые коды моих коллег, которые создали невосприимчивый контейнер на C++. Контейнер выглядит следующим образом:Что мы можем сделать, если мы не можем удалить элементы из контейнера C++

NoDeleteContainer<MyObject> objList; 

С его контейнером, я теперь создать некоторые объекты их инсайдерских objList. То, что я сейчас делаю, - это проанализировать особенности каждого объекта-объекта objList, и если функция объекта соответствует некоторым критериям, я сохраню их. Тогда моя проблема сейчас в том, что я не знаю, что это лучшая практика, чтобы держать их, и есть несколько решений, я могу понять:

Решение 1:

NoDeleteContainer<MyObject*> selObjPointerList; 
//selObjPointerList will then keeps the pointer to the selected objects. 

Решение 2:

std::vector indictorVec(objList.size(),false); 
    // change the indictor's value to true if its corresponding MyObject fulfill the requirements. 

решение 3:

std::vector<MyObject*> selObjPointerList; 
    // similar to Solution 1 

Тогда мой вопрос, какое решение лучше, или если у вас есть новые S вы можете обсудить их.

+6

Почему бы вам не спросить своих коллег о том, что означает этот контейнер? Если он предназначен для хранения элементов, которые вы не должны удалять (что бы это ни значило), похоже, что вы не должны его использовать. – juanchopanza

ответ

2

Обычный способ внесения изменений в неизменяемый контейнер заключается в создании нового экземпляра контейнера с выбранными элементами.

Это может помочь использовать изменяемый контейнер во время процесса фильтрации.

Неизменяемые контейнеры обычно встречаются в определенных стилях многопоточного программирования.

Смежные вопросы