Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <vector>
- #include <algorithm>
- #include <iterator>
- #include <iostream>
- template<typename iter1, typename iter2>
- iter2 myremove(iter1 it1_beg, iter1 it1_end, iter2 it2_beg, iter2 it2_end)
- {
- std::vector<int> v1_copy;
- for (iter1 it = it1_beg; it != it1_end; ++it) {
- v1_copy.push_back(*it);
- }
- std::sort(v1_copy.begin(), v1_copy.end());
- std::unique(v1_copy.begin(), v1_copy.end());
- std::vector<int>::iterator delete_it = v1_copy.begin();
- while (*delete_it < 0 && delete_it != v1_copy.end()) {
- ++delete_it;
- }
- iter2 write_it = it2_beg;
- for (iter2 read_it = it2_beg; read_it != it2_end; ++read_it) {
- if (delete_it != v1_copy.end() && *delete_it == std::distance(read_it, it2_beg)) {
- ++delete_it;
- } else {
- std::swap(*write_it, *read_it);
- ++write_it;
- }
- }
- return write_it;
- }
- // int main()
- // {
- // std::vector<int> ind = {1, 2};
- // std::vector<int> v = {1, 2, 15, 40};
- // auto it = myremove(ind.begin(), ind.end(), v.begin(), v.end());
- // it--;
- // std::cout<<*it--<<std::endl;
- // std::cout<<*it--<<std::endl;
- // std::cout<<*it--<<std::endl;
- // std::cout<<*it--<<std::endl;
- // }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement