Visualizzazione dei risultati da 1 a 7 su 7

Discussione: problemi STL <set>

  1. #1

    problemi STL <set>

    Nel container set della stl gli iteratori non sono costanti, quindi non capisco perchè non posso modificarli per scorrere il container.
    Io dichiaro un oggetto di tipo iterator che non posso modificare non di const iterator!
    Qualcuno mi sa dire eventualmente come forzare il tutto!

  2. #2
    potresti riformulare?

    allora hai un set e non riesci a iterare con gli iteratori?

    una cosa del genere non funziona?

    codice:
    set<int>x;
    set<int>::iterator i;
    	
    x.insert (3);
    x.insert (4);
    x.insert (5);
    for(i=x.begin(); i!=x.end();++i)
       cout << *i;

  3. #3
    Io devo ho creato una struttura e di conseguenza un tipo di questa struttura che metto nel
    container set

    struct blocco_memoria
    {
    int grandezza;
    int indirizzo_base;
    };


    typedef set<blocco_memoria> albero_memoria;

    poi inserisco dei dati e tramite l'iteratore vorrei spostarmi, ma quando tento di aggiornare
    l'iteratore ho subito errori di "struttura sola lettura"

    set<blocco_memoria>::iterator t_elemento;

    (*t_elemento).grandezza --; // errore

  4. #4
    prova t_elemento->grandezza--;
    esempio
    codice:
    #include <set>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    class bloc 
    { 
    public:
    	bloc(int g,int i) 
    	: grandezza(g), indirizzo_base(i){};
    
    int grandezza; 
    int indirizzo_base; 
    }; 
    
    bool operator < (const bloc& x, const bloc& y)
    {
    	return x.indirizzo_base < y.indirizzo_base;
    };
    	
    ostream& operator<< ( ostream& os, const bloc& bl )
    {
       os << " # " << bl.indirizzo_base << " # " << bl.grandezza ;
       return os;
    }
    
    
    void main(){
    
    	set<bloc> bl;
    	set<bloc>::iterator  it;
    	bloc b1(10,0x7888), b2(100,0x71118);
    
    	
    	bl.insert (b1);
    	bl.insert (b2);
    	
    
    	it = bl.begin();
    	it->grandezza = 11; //modifica il valore
    	copy(bl.begin(), bl.end(), ostream_iterator<bloc>(cout, "\n"));
    	
    }

  5. #5
    Ho provato ma niente da fare!
    Io utilizzo devc++
    Ho provato anche con jbulider6 ma ho sempre un errore simile
    Non posso modificare una struttura a sola lettura.
    Forse devo passare a set la struttura in altro modo?
    Sto esaurando!!!!!

  6. #6
    Il punto e` questo: un contenitore 'set' permette di aggiungere o rimuovere elementi, ma non di modificarli!

    Dovresti quindi impostare prima i valori della struttura e poi aggiungerla al 'set'.

    Ciao.

  7. #7
    oppure usa una struttura di tipo map.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.