Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [c++] Popolare vector di valori senza ricorrere al push_back()

    Siccome dovrei crearmi TOT vector di tot elementi numerici :

    Es.

    vector <int> gruppo1 contenente
    5-6-14-17-23-28-33-38-43-44-45-46-47-48-53-58-63-68-73-78-83-88
    vector <int> gruppo2 contenente
    03-04-05-06-07-08-13-14-15-16-17-18-23-24-33-34-43-44-53-54-63-64-73-74
    ecc...
    mi piacerebbe, se fosse possibile ma non riesco a ritrovare nulla al riguardo...,
    non ricorrere al push_back() per aggiungere ogni singolo valore "manualmente" con molte righe di codice bensì inserirli in ogni gruppo con una sola riga di codice...

    Tipo..., e sono consapevole di star scrivendo un'eresia ma è solo un es. per far capire cosa mi piacerebbe ottenere:

    Dopo aver definito i singoli vector...
    Assegnare loro rispettivamente i numeri componenti con una sola riga...
    gruppo1 =[5-6-14-17-23-28-33-38-43-44-45-46-47-48-53-58-63-68-73-78-83-88];
    ecc...
    e non facendo ad es. per il gruppo1
    gruppo1._push_back(5);
    ecc...

    Tnx

  2. #2

    Re: [c++] Popolare vector di valori senza ricorrere al push_back()

    Originariamente inviato da freetom

    mi piacerebbe, se fosse possibile ma non riesco a ritrovare nulla al riguardo...,
    non ricorrere al push_back() per aggiungere ogni singolo valore "manualmente" con molte righe di codice
    Ho capito bene o non hai idea di cosa sia un loop?

    Ad ogni modo esiste la funzione set_union in <algorithm>

    http://www.cplusplus.com/reference/algorithm/set_union/

  3. #3
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    codice:
    template <class T>
    void init(vector<T>& v,unsigned int n, ...)
    {
        T temp;
        va_list vl;
        va_start(vl,n);
        for(unsigned int j=0;j<n;j++)
        {
            temp=va_arg(vl,T);
            v.push_back(temp);
        }
        va_end(vl);
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: Re: [c++] Popolare vector di valori senza ricorrere al push_back()

    Originariamente inviato da Andrea Simonassi
    Ho capito bene o non hai idea di cosa sia un loop?
    E' così ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Re: Re: Re: [c++] Popolare vector di valori senza ricorrere al push_back()

    Originariamente inviato da oregon
    E' così ?
    Se per loop... intendete il for l'ho capito e me ne servo...

    ma se intendete altro.. no non l'ho capito

    codice:
    template <class T>
    void init(vector<T>& v,unsigned int n, ...)
    {
        T temp;
        va_list vl;
        va_start(vl,n);
        for(unsigned int j=0;j<n;j++)
        {
            temp=va_arg(vl,T);
            v.push_back(temp);
        }
        va_end(vl);
    }
    Questo di "Who am I" credo faccia al caso mio ma dove li inserisco i singoli valori definiti?

    Grazie 1000 e ricordate che non mangio pane e c++ come voi altri
    Mi limito a servirmene per i miei ludici lotto statistici scopi come meglio riesco Tutto qui.

    Un saluto a tutti/e e grazie ancora per la rapidità di risposta anche!

    ps: "Ad ogni modo esiste la funzione set_union in <algorithm>"
    Ad ogni modo stasera guardo anche questa funzione sperando di riuscire a capirla e ad utilizzarla Grazie Andrea!



    Nel frattempo mi è stato risposto anche così:
    Per inserire ad esempio questi valori 10,20,30,40,50.

    codice:
    static const int_array = { 10,20,30,40,50 };
    
    int main()
    {
    // inizializza il vettore con gli interi
    vector<int> int_vector( int_array[0], int_array[5] );
    }
    NB: il secondo parametro del vector punta all'elemento SUCCESSIVO l'ultimo elemento di array

    quindi se ho capito bene...

    per "accedere" al valore 30 ad esempio io basta... che lo richiami con:

    codice:
    int valore = int_vector[int_array[3]];    ???
    O è del tutto sbagliato? C'e' una via ancora + semplice? Comunque già questa potrebbe bastarmi per ridurre notevolmente il lavoro.. che mi aspetta

    tnx

  6. #6
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    E' una funzione con argomenti variabili, che chiami ad esempio così:

    codice:
    vector<char> v;
    init(v,3,'c','a','b');
    Ma prova anche il metodo suggerito da Andrea Simonassi, credo sia più "elegante".

  7. #7
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725
    Originariamente inviato da Who am I
    E' una funzione con argomenti variabili, che chiami ad esempio così:

    codice:
    vector<char> v;
    init(v,3,'c','a','b');
    Ma prova anche il metodo suggerito da Andrea Simonassi, credo sia più "elegante".
    Gentilissimo ma mi faresti un es. con il caricamento in v1 e v2 di due gruppi di numeri?
    Es.

    in v1 1,2,3
    in v2 4,5,6

    caricati automaticamente grazie alla tua funzione.

    codice:
    template <class T>
    void init(vector<T>& v,unsigned int n, ...)
    {
        T temp;
        va_list vl;
        va_start(vl,n);
        for(unsigned int j=0;j<n;j++)
        {
            temp=va_arg(vl,T);
            v.push_back(temp);
        }
        va_end(vl);
    }
    Grazie mille

  8. #8
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    codice:
        vector<int> v1,v2;  
        init(v1,3,1,2,3);
        init(v2,3,4,5,6);

  9. #9
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725
    Originariamente inviato da Who am I
    codice:
        vector<int> v1,v2;  
        init(v1,3,1,2,3);
        init(v2,3,4,5,6);
    Intanto grazie 1000!!!

    Stasera provo e ti faccio sapere

    Grazie ancora!


  10. #10
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Dunque...

    Originariamente inviato da freetom
    Intanto grazie 1000!!!

    Stasera provo e ti faccio sapere

    Grazie ancora!


    Messo nel corpo del programma

    codice:
    vector<int> cinquina60;  
        init(cinquina60,5,8,10,13,17,19,20,25,28,32,34,39,42,44,47,49,53,58,59,60,62,65,67,68,74,75,77,79,83,87);
    volendo caricare cinquina60 dei valori che vedi sopra e ho messo il tuo codice

    codice:
    template <class T>
    void init(vector<T>& v,unsigned int n, ...)
    {
        T temp;
        va_list vl;
        va_start(vl,n);
        for(unsigned int j=0;j<n;j++)
        {
            temp=va_arg(vl,T);
            v.push_back(temp);
        }
        va_end(vl);
    }
    dopo

    codice:
    int main (int argc, char *argv[])
    {
    Ma ovviamente mi da errore...

    Come lo devo sistemare a modo?

    Grazie infinite!


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 © 2025 vBulletin Solutions, Inc. All rights reserved.