Try   HackMD

Vector of List of Object Manipulation

#include <iostream> #include <list> #include <vector> using namespace std; class portfolio { public: portfolio() { _id = 0; gain_ = 0; } portfolio(int id, int gain) { _id = id; gain_ = gain; } portfolio(const portfolio& obj) { _id = obj._id; gain_ = obj.gain_; } int _id; int get_gain() const { return gain_; } void set_gain(int gain) { gain_ = gain; } private: int gain_; }; int main() { vector<list<portfolio>> rothschild; list<portfolio> cow; list<portfolio> star; list<portfolio> dog; list<portfolio> que; rothschild.push_back(cow); rothschild.push_back(star); rothschild.push_back(dog); rothschild.push_back(que); for(int i = 1; i < 10; i++) { int gain = 5; portfolio cowCompany(i, gain); rothschild[0].push_back(cowCompany); gain = 10; portfolio starCompany(i*10, gain); rothschild[1].push_back(starCompany); gain = 1; portfolio dogCompany(i*100, gain); rothschild[2].push_back(dogCompany); gain = 3; portfolio queCompany(i*1000, gain); rothschild[3].push_back(queCompany); } cout << "Finish Constructing" << endl; /*-Reverse Range queCompany-*/ list<portfolio> tempRev; list<portfolio> tempRemain; int id = 3; //--Reverse at index 4-7 int start = 3; int end = 6; list<portfolio>::iterator fit = rothschild[id].begin(); list<portfolio>::iterator bit = rothschild[id].begin(); advance(fit, start); advance(bit, end); cout << "Slicing" << endl; rothschild[id].splice(tempRemain.begin(), rothschild[id], bit, rothschild[id].end()); rothschild[id].splice(tempRev.begin(), rothschild[id], fit, rothschild[id].end()); tempRev.reverse(); rothschild[id].splice(rothschild[id].end(), tempRev); rothschild[id].splice(rothschild[id].end(), tempRemain); /*-Reorder Cow-*/ list<portfolio> tempOdd; list<portfolio> tempEven; int size = rothschild[0].size(); for(int i = 0; i < size; i++) { portfolio obj; obj = rothschild[0].front(); rothschild[0].pop_front(); if(obj._id % 2 == 0) { //Even tempEven.push_back(obj); } else { tempOdd.push_back(obj); } } rothschild[0].splice(rothschild[0].begin(), tempEven); rothschild[0].splice(rothschild[0].end(), tempOdd); /*-Remove Odd dogCompany-*/ rothschild[2].remove_if([](portfolio & obj) {return ((obj._id/100)%2) == 1;}); for(auto &i : rothschild) { for(auto &j : i){ cout << j._id << endl; } } cout << "Temp: " << endl; for(auto &i : tempRev) { cout << i._id << endl; } return 0; }