Wczytywanie określonej liczby liczb z ciągu zawartego w kodzie do tablicy, wektora lub listy.

0

Witam!

Czy istnieje możliwość wczytania określonej liczby liczb z ciągu zawartego w kodzie programu? Mam na przykład zbiór {1, 3, 7, 4, 5, 252, 6524, 5245, 524} (docelowo ma tam być 1000 elementów). Chcę wczytać do listy pierwsze trzy elementy, czyli {1, 3, 7}. Zawsze wczytujemy od pierwszego. Jak to zrobić?

0

Pętlą.

0

Dzięki za odpowiedź, ale jak pętlą? Niezbyt wiele mi to powiedziało :(

0

Zakładam, że ciąg masz w jakiejś tablicy bądź vectorze. Tworzysz sobie nową listę i po prostu dodajesz 3 elementy. Jeśli zawsze są to trzy pierwsze elementy, to nawet pętli nie musisz używać.

list<int>lista;
lista.push_back(tab[0]);
lista.push_back(tab[1]);
lista.push_back(tab[2]);

Natomiast, jeśli chcesz wczytać n liczb, to już pętli należy użyć:

list<int>lista;
    int n;
    cin>>n;
    for(int i=0;i<n;++i)
        lista.push_back(tab[i]);

    for(list<int>::iterator it=lista.begin(); it!=lista.end();it++)
        cout<<*it<<" ";
    cout<<endl;
0

Obojętne którą np for

for(vector<int>::iterator i = iv.begin(); i != iv.end(); ++i)
      cout << *i << endl;
// lub bez iteratora
for(int i = 0; i < iv.size(); ++i)
      cout << iv[i] << endl;
0

Oj, coś takiego to ja umiem zrobić, ale po co tworzyć wektor 1000 elementów, z których użyję np. sześć. Chodzi o to, żeby niepotrzebnie nie zajmować pamięci. Jak właduję na początek wektor 1000 liczb, to nie będzie to zbyt oszczędne. Chodzi mi o to, żeby te liczby "przechowywane" były w kodzie, a nie w pamięci. Wiesz już, o co mi chodzi?

0
merlinnot napisał(a)

Oj, coś takiego to ja umiem zrobić, ale po co tworzyć wektor 1000 elementów, z których użyję np. sześć. Chodzi o to, żeby niepotrzebnie nie zajmować pamięci. Jak właduję na początek wektor 1000 liczb, to nie będzie to zbyt oszczędne. Chodzi mi o to, żeby te liczby "przechowywane" były w kodzie, a nie w pamięci. Wiesz już, o co mi chodzi?

Tablica dynamiczna lub wektor służą do tworzenia tablic (lub kontenerów ściśle mówiąc, jak vector), których ilość elementów z góry nie jest znana.

0

To po prostu wrzuć te liczby do pliku, nie będą zajmowały pamięci.
Jeżeli zamieściłbyś te liczby w kodzie, to program zajmowałby więcej miejsca w pamięci mimo wszystko.

0

Przepraszam za kodowaną herezję, ale może zrozumiecie, o co mi chodzi:

cin >> ilosc; /*wczytuję ilość liczb, które mają być wczytane do tablicy*/
int tab[ilosc] = {1, 2, 3, 4, 5, 6, 7, 8, 9} /* Dla ilosc=3 wczytuję do tablicy {1, 2, 3}, dla 6 {1, 2, 3, 4, 5, 6} itd. */ 

Wiem, że mógłbym od razu wczytać tablicę 1000 elementów i wypisać z niej kilka do listy, pytanie tylko: po co? Chciałbym od razu stworzyć tablicę kilku elementów, żeby oszczędzić pamięć.

0

O to chodzi?

cin >> ilosc;
std::vector<int> tab(ilosc);
for(int i=1; i<=ilosc; i++)
   tab.at(i-1)=i;

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