in pratica ho un for che parte da N/2 e arriva a n-1
il mio iteratore deve prendere il valore dell' indice del for quindi Iteratore_1= i;
successivamente il mio iteratore deve puntare a un nodo di una lista e modificare il valore in esso contenuto ad esempio da 2 a 3
codice:
#include <iostream>
//#include <vector>
#include <iterator>
#include <vector>
using namespace std;
class Merg{
private:
vector <int> a;
vector <int> b;
vector <int> ::iterator i_1;
vector <int> ::iterator j_1;
vector <int> ::iterator k_1;
int left;
int center;
int right;
public:
void mergesort(vector <int> &a, int left, int right);
void merge( vector <int> &a, int left, int center, int right);
void stamp(vector <int> &);
Merg();
};
Merg::Merg(){
cout<<"Inserisco I valori"<<endl;
a.push_back(4);
a.push_back(3);
a.push_back(2);
a.push_back(1);
cout<<"End del Vettore = "<<a.size()<<endl<<"Vettore disordinato"<<endl;
//stamp(a);
mergesort(a,0,(a.size()-1));
cout<<"Vettore ordinato"<<endl;
//stamp(a);
stamp(b);
};
void Merg::merge(vector <int> &a, int left, int center, int right){
int n=a.size(),i,j,k;
for ( i = center+1; i > left; i--){
//b[i-1] = a[i-1];
//il mio iteratore i_1 deve prendere il valore di i
per poi andare a puntare all' indirizzo del vettore b[i-1]e modificare il mio valore
}
for (j = center; j < right; j++){
//b[right+center-j] = a[j+1];
}
for (k = left; k <= right; k++){
if (b[j] < b[i]){
//a[k] = b[j--];
}else{
//a[k] = b[i++];
}
}
};
void Merg::mergesort(vector <int> &a, int left, int right) {
if (left<right) {
int center = (left+right)/2;
mergesort(a, left, center);
mergesort(a, center+1, right);
merge(a, left, center, right);
}