OVH Cloud OVH Cloud

référence sur des vector

1 réponse
Avatar
AG
Bonjour,

Voici en simplifié ce que je voudrais faire. J'ai un vecteur de dimension N, qui représente une mémoire pour
moi. Je voudrais le couper en deux pour pouvoir travailler sur les deux parties, sans dupliquer le vecteur. Je
cherche donc à avoir deux références qui correspondent à deux vecteurs de dimension N/2, dont les valeurs sont
celle du vecteur initial.

int N=10;
int i;
vector<int> a = vector<int>(N,0);
for(i=0;i<N;i++)
a.push_back(i);

vector<int>::iterator mid = a.begin();
mid+=5;

vector<int> & a1 = vector<int>(a.begin(),mid); // quelque chose dans ce genre là
vector<int> & a2 = vector<int>(mid,a.end()); // quelque chose dans ce genre là

a1[0] = 10;
a2[0] = 22;

cout << "a ";
for(mid=a.begin();mid!=a.end();mid++)
cout << *mid << " ";
cout << "\na1 ";
for(mid=a1.begin();mid!=a1.end();mid++)
cout << *mid << " ";
cout << "\na2 ";
for(mid=a2.begin();mid!=a2.end();mid++)
cout << *mid << " ";

Je voudrais que les modifs apportées sur a1 et a2 soient reportées sur a.

Est-ce possible ? Si oui comment, et si non pourquoi ?

merci d'avance.

Alexandre.

1 réponse

Avatar
AG
Bon,

je me suis débrouillé tout seul comme un grand, et j'ai opté, tout
simplement, pour l'utilisation d'itérateur plutôt que de vecteur.
C'était évident finalement.

Merci quand même,

Alexandre.