Lunghezza di un vettore C++

di il
2 risposte

Lunghezza di un vettore C++

Ciao a tutti :)

ho voluto provare a creare un programma che mi outputtasse la lunghezza di un vettore avendo come imput il vettore stesso. Praticamente ricreare la funzione size() senza però utilizzarla.

Questo è ciò che ho provato a scrivere:

#include <iostream>
#include <vector>

// lenght vector
//POST: returns the lenght of myvector
int lenght_vector (std::vector<int> myvector) {
    int lenght = 0;
    for (int i = 0; myvector.at(i) > 0; ++i) {
        ++lenght;
    }
    return lenght;
}

int main() {

    std::vector<int> myvector;
    std::cout << "the lenght of this vector is" << lenght_vector(myvector);
    return 0;
}

 il codice viene compilato ma purtroppo quando premo su “run” mi esce questo messaggio:

terminate called after throwing an instance of 'std::out_of_range' 

what(): vector::_M_range_check 

Aborted

Qualcuno mi sa spiegare che significa e cosa sbaglio? 

grazie mille e una splendida giornata!

2 Risposte

  • Re: Lunghezza di un vettore C++

    OUT OF RANGE:sei andato OLTRE l'ultimo elemento possibile del vettore.

    Se il vettore ha 3 elementi (con indici da 0 a 2) hai tentato di accedere all'elemento con indice 3.

  • Re: Lunghezza di un vettore C++

    Devi gestire l'eccezione

    int length_vector(std::vector<int> myvector) {
        int length = -1;
        try { 
            while(true)
              myvector.at(++length);
        } catch (...) {}
        return length;
    }
Devi accedere o registrarti per scrivere nel forum
2 risposte