Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    79

    [Dev C++] Vector di Array monodomensionali, come posso fare?

    Ciao


    Il codice qui sotto dichiara e riempie un vector con dei semplici interi:



    #include <iostream>
    #include <stdlib.h>
    #include <vector>

    using namespace std;

    int main(int argc, char *argv[])
    {
    //Dichiaro un vector di 10 interi
    vector<int> vec(10);
    int i;

    /* L'iteratore è il cursore che indica
    a che numero di riga ci troviamo */
    vector<int>::iterator it = vec.begin();

    /* Inizializzo il vector. 'it' scorre puntando
    ogni volta ad una riga differente */
    for(i=0; it!=vec.end(); ++i,++it)
    *it = i;

    system("PAUSE");
    return 0;
    }

    Ora, se io volessi riempire questo vector di array interi monodimensionali di 4 elementi (da 0 a 3), e poi trattarlo come se fosse una matrice bidimensionale, con righe riallocabili (elementi del vector) e colonne costanti (elementi dell'array), come potrei fare?

    Mille grazie.
    "La fortuna aiuta gli audaci"
    (e non gli adagiati)

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    codice:
    vector < vector < int > > mtx(10);
    for(i=0; i < mtx.size(); ++i) {
       mtx[i].resize(4);
       mtx[i][0] = i
    }
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    79
    Originariamente inviato da shodan
    codice:
    vector < vector < int > > mtx(10);
    for(i=0; i < mtx.size(); ++i) {
       mtx[i].resize(4);
       mtx[i][0] = i
    }

    Ti ringrazio molto, apporto per completezza un paio di modifiche sintattiche al tuo codice affichè funzioni anche per chi verrà dopo :


    codice:
    vector < vector < int > > mtx(10);
    for(int i=0; i < mtx.size(); ++i) {
       mtx[i].resize(4);
       mtx[i][0] = i;
    }
    In pratica però, quello che hai fatto è un vector bidimensionale, ridimensionando di volta in volta una dimensione a 4, o sbaglio?
    Per curiosità, sarebbe possibile fare un vero e proprio vector di array e, per simmetria, un array di vector?
    E la cosa, avendo una dimensione fissata, sarebbe utile al fine di risparmiare memoria?
    O, come è nella tua firma, visto che l'array è costrutto specifico del c, mentre il vector del c++, a mischiarli il programma esplode ?

    Grazie
    "La fortuna aiuta gli audaci"
    (e non gli adagiati)

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Si. E' un vector di vector. Si possono annidare a piacimento, almeno finché la macchina non protesta. Non è molto efficiente come soluzione ma si può fare.



    Intendi:
    codice:
       vector < char[5] > b[10];
    ? In teoria si, almeno il VC++ 2008 non protesta. Però la mia filosofia è di non ficcarmi nei guai se proprio non ci sono costretto. Quindi non ho mai approfondito la cosa (anche perché inutile)
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

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.