fork download
  1. #include <iostream>
  2. #include <memory>
  3. #include <list>
  4.  
  5. class Record{
  6. private:
  7. int value;
  8. public:
  9. Record(int value){
  10. this->value=value;
  11. }
  12. int getValue(){
  13. return this->value;
  14. }
  15. };
  16.  
  17.  
  18. void printSize(std::list<std::shared_ptr<Record>> list){
  19. long size=0;
  20. for (std::shared_ptr<Record> record: list)
  21. {
  22. size+=sizeof(record.get());
  23. }
  24. std::cout<<"size of list: "<<size<<std::endl;
  25.  
  26. }
  27. void printList(std::list<std::shared_ptr<Record>> list){
  28. std::cout<<"List: ";
  29. for (std::shared_ptr<Record> record: list)
  30. {
  31. std::cout<<record.get()->getValue()<<" ,";
  32. }
  33. std::cout<<std::endl;
  34.  
  35. }
  36.  
  37. int main(){
  38. std::list<std::shared_ptr<Record>> list;
  39. for (size_t i = 0; i < 20; i++)
  40. {
  41. list.push_back(std::make_shared<Record>(Record((int)i)));
  42. }
  43. printList(list);
  44. printSize(list);
  45. std::cout<<"Removing 10"<<std::endl;
  46. list.remove_if([](std::shared_ptr<Record> rec){return rec.get()->getValue()==10;});
  47. printList(list);
  48. printSize(list);
  49. }
Success #stdin #stdout 0.01s 5292KB
stdin
Standard input is empty
stdout
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