Bonjour,
Je fais du traitement d'image 3d donc des grosses données avec une gestion par file d'attente.
Je suis tombé sur ce probleme que je résume avec ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main()
{
  deque< int > d;
  int max = 100000;
  for(int i=0;i<1200;i++)
  {
 
    for(int j=0;j<max;j++)
//SOIT PUSH_BACK, SOIT PUSH_FRONT
      d.push_back(i);
    //d.push_front(i);
  }
 
  while(d.empty()!=true)
  {
    d.pop_front();
  }
  d.resize(d.size());
  cout<<"taille "<<d.size()<<endl;
  while(1!=0)
  {
  }
}
Le probleme est qu'avec push_front. Tout marche sur des roulettes. Je vois que mon processus utilise 0% mémoire dans la boucle infini en revanche si il y a
push_back à la place du push_front, mon processeur utilise 50% de mémoire dans la boucle infini et pourtant la taille du conteneur est de 0.
Mes questions sont:
Comment demander au conteneur de reserver uniquement la place mémoire équivalent à sa taille?
Existe-il un conteneur qui automatiquement va retailler la place mémoire utilisée?

PS: J'ai essayé d.resize(d.size()) mais cela ne marche pas.
PPS le probleme est similaire avec le conteneur queue.
Merci de votre aide