wczytywanie tablicy do vectora

0

Czy ktoś mógłby mi podpowiedzieć, gdzie robię błąd i dlaczego to mi nie działa?

 
#include <iostream>
#include <vector>

using namespace std;

void a( string liczby[] )
{
    vector < string > dane(liczby, liczby+sizeof(liczby)/sizeof(string));
    for( int i = 0; i <sizeof(liczby)/sizeof(string); i++ )
    {
    dane[i]=liczby[i];
    cout<<dane[i];
    }

}

int main ()

{
   string moje_liczby[] = { "16", "2", "77" };
    a( moje_liczby );

  return 0;
}


3

sizeof(liczby) da ci rozmiar wskaźnika, a sizeof(string) wielkość będzie podobna do wielkości wskaźnika - w zależności od implementacji...

0

Można jaśniej?

2
void a(string liczby[])

jest równoważne

void a(string* liczby)

W jednym i drugim przypadku sizeof(liczby) daje rozmiar jednego wskaźnika.

Poza tym używaj vector<string> czy tam array<string, 3> zamiast takich cyrków.

2

jezeli bedziesz uzywac vectora o stalym rozmiarze to lepiej uzyc std::array. Jezeli nie bedzie on staly, to nie inicjalizuj tego vectora z wielkoscia tablicy...
http://stackoverflow.com/questions/8777603/what-is-the-simplest-way-to-convert-array-to-vector
http://stackoverflow.com/questions/259297/how-do-you-copy-the-contents-of-an-array-to-a-stdvector-in-c-without-looping

0

W takim razie jak mam przekazać rozmiar tablicy statycznej do funkcji?

0

Koniecznie muszę zrobić takie przepisywanie tablicy do vectora, więc proszę o pomoc.

0

tak, jezeli przekazujesz tablice to ona nie wie jaki ma rozmiar.

0
Janke527 napisał(a):

W takim razie jak mam przekazać rozmiar tablicy statycznej do funkcji?

Jako osobny parametr funkcji. Co sugeruje, że wygodniej użyć wbudowanego kontenera.

0

Mógłbyś pokazać nagłówek takiej funkcji która miałaby jako parametr rozmiar tablicy statycznej?

1 użytkowników online, w tym zalogowanych: 0, gości: 1