Cześć wszystkim,
Mam za zadanie napisać program, o poniższej treści:
Mój kod na ten moment wygląda tak:
#include <iostream>
#include <vector>
#include <functional>
using namespace std;
std::vector<int>::iterator remove_if(std::vector<int>::iterator b, std::vector<int>::iterator e, std::function<int(int)> n){
std::vector<int> v {};
std::vector<int>::iterator vBegin = v.begin();
std::vector<int>::iterator vEnd = v.end();
int i = 0;
while(b<e){
v.push_back(*b);
if(!n(*b)){
v.push_back(*b);
}
i++;
b++;
}
b = b - i;
int index = 0;
while(b<e){
*b = v[index];
index++;
b++;
}
return b;
}
int main() {
std::vector<int> vector {-7, 5, 2, 2, 11, 2, 3};
auto result = remove_if(vector.begin(), vector.end(), [](int element) {return element < 3; });
for (auto iterator = vector.cbegin(); iterator < result;) {
std::cout << *iterator++ << " ";
}
std::cout << std::endl;
}
Mój pomysł jest taki, żeby stworzyć vector z elementów, które są większe od 3 i nadpisać tym vectorem vector docelowy. Problem w tym, że o ile pierwsza pętla działa prawidłowo, druga nie do końca spełnia swoje zadanie tj. nie nadpisuje vectora w main, moim vectorem z poprawnymi wartościami większymi od 3. Ktoś widzi może, gdzie zrobiłem błąd, lub ma pomysł, jak to inaczej ugryźć?
Będę bardzo wdzięczny za wskazówki