Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <list>
- #include <vector>
- using namespace std;
- class NumbersOnVector
- {
- public:
- void Add(int x)
- {
- data.push_back(x);
- }
- template<typename Predicate>
- void Remove(Predicate predicate)
- {
- data.erase(
- remove_if(begin(data),end(data),predicate),
- data.end());
- }
- private:
- vector<int> data;
- };
- class NumbersOnList
- {
- public:
- void Add(int x)
- {
- data.push_back(x);
- }
- template<typename Predicate>
- auto FindLast(Predicate predicate)
- {
- return find_if(rbegin(data),rend(data),predicate);
- }
- template<typename Predicate>
- void Remove(Predicate predicate)
- {
- data.remove_if(predicate);
- }
- private:
- list<int> data;
- };
- const int SIZE = 10000;
- const int REMOVAL_COUNT = 1000;
- int main()
- {
- {
- //LOG_DURATION("list");
- NumbersOnList numbers;
- for (int i = 0; i < SIZE; ++i)
- {
- numbers.Add(i);
- }
- auto it = numbers.FindLast([](int x ){return x%REMOVAL_COUNT==0;});
- for(int i=1;i<REMOVAL_COUNT;++i)
- {
- numbers.Remove([i](int x){return x%REMOVAL_COUNT==i;});
- }
- cout<<*it<<" "<<"\n";
- while(*it!=0)
- {
- cout<<*it<<" ";
- ++it;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement