#include <iostream> #include <memory> #include <list> class Record{ private: int value; public: Record(int value){ this->value=value; } int getValue(){ return this->value; } }; void printSize(std::list<std::shared_ptr<Record>> list){ long size=0; for (std::shared_ptr<Record> record: list) { size+=sizeof(record.get()); } std::cout<<"size of list: "<<size<<std::endl; } void printList(std::list<std::shared_ptr<Record>> list){ std::cout<<"List: "; for (std::shared_ptr<Record> record: list) { std::cout<<record.get()->getValue()<<" ,"; } std::cout<<std::endl; } int main(){ std::list<std::shared_ptr<Record>> list; for (size_t i = 0; i < 20; i++) { list.push_back(std::make_shared<Record>(Record((int)i))); } printList(list); printSize(list); std::cout<<"Removing 10"<<std::endl; list.remove_if([](std::shared_ptr<Record> rec){return rec.get()->getValue()==10;}); printList(list); printSize(list); }
Standard input is empty
List: 0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 , size of list: 160 Removing 10 List: 0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 , size of list: 152