Wyświetlanie zawartości kontenera wektorowego w C++

Wyświetlanie zawartości kontenera wektorowego w C++

Istnieje idiomatyczny sposób drukowania wektorów.

#include <algorithm>
#include <iterator>

//note the const
void display_vector(const vector<int> &v)
{
    std::copy(v.begin(), v.end(),
        std::ostream_iterator<int>(std::cout, " "));
}

Ten sposób jest bezpieczny i nie wymaga śledzenia rozmiaru wektorów ani niczego w tym rodzaju. Jest również łatwo rozpoznawalny dla innych programistów C++.

Ta metoda działa również na innych typach kontenerów, które nie pozwalają na swobodny dostęp.

std::list<int> l;
//use l

std::copy(l.begin(), l.end(),
          std::ostream_iterator<int>(std::cout, " "));

Działa to w obie strony z danymi wejściowymi, weź pod uwagę następujące kwestie:

#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
    std::cout << "Enter int end with q" << std::endl;
    std::vector<int> v; //a deque is probably better TBH
    std::copy(std::istream_iterator<int>(std::cin),
              std::istream_iterator<int>(),
              std::back_inserter<int>(v));

    std::copy(v.begin(), v.end(),
              std::ostream_iterator<int>(std::cout, " "));
}

Ta wersja nie wymaga żadnego stałego kodowania rozmiaru ani ręcznego zarządzania rzeczywistymi elementami.


Nie inicjujesz swoich zmiennych. for(int i = 0; nie for(int i;


Myślę, że to najłatwiejszy sposób:

#include <iostream>
#include <vector>

using namespace std;

int main(){
    vector<int> v;
    int x;
    cout << "Enter five integer values" << endl;
    for(int i=0; i<5; i++)
    {
        cin >> x;
        v.push_back(x);
    }

    for (int i = 0; i < (int)v.size(); i++)
        cout<< v.at(i) <<endl;

}