Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Donez medicamente renale ptr pisica
 Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...

problema test grila

Digi24 a disparut de pe TV Lg
 Drept de proprietate intelectuala...

Jante noi shitbox

Trinitas TV 4K

Dacia 1316 cu 6 usi ...
 Frecventa modificata radio

Un nou pericol pt batrani

Ar trebui sa vindem imobiliarele ...

Dupa renuntarea la aparat dentar
 

Cum salvez elemente in std::vector

- - - - -
  • Please log in to reply
22 replies to this topic

#1
georgecosmin98

georgecosmin98

    Junior Member

  • Grup: Members
  • Posts: 84
  • Înscris: 26.11.2017
Buna seara!

Am inceput sa "ma joc" cu clase si vectori. Pana acum m-am folosit de vectori "manual". Adica i-am citit de la tastatura/fisier cu for, i-am declarat ("v[100]").

Acum ca am mai prins experienta, am trecut de la CodeBlocks la Visual Studio 2017 si pentru a-mi usura munca am zis ca trebuie sa trec neaparat la biblioteca #include <vector>.

Problema mea e ca nu stiu cum as putea sa afisez valorile, mai precis nu stiu cum sa le salvez in vector.

// ConsoleApplication270.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <vector>
#include "Persoane.h"
#include <fstream>
#include <string>

ifstream f("file.txt");

string n, p;
int v,nr;

int main()
{
std::vector<Persoane>pers;
nr = 0;

while (f.good())
{
  f >> n;
  f >> p;
  f >> v;
  pers.push_back(Persoane(n, p, v));
}
for (int i = 1; i < pers.size(); i++)
  pers[i].afPersoane();


return 0;
}



Vreau sa va intreb cum se salveaza corect in vector si cum se afiseaza corect din el?

push_back (daca am inteles eu bine) face salvarea (adaugare pe ultima pozitie)

#2
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,445
  • Înscris: 10.08.2005
La ce te referi cand spui ca salvezi un vector ?

#3
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
push_back mareste dimensiunea vectorului si adauga ceva la final.
insert adauga ceva (sau mai multe) la o anumita pozitie (de exemplu vrei sa inserezi la mijloc)
operator[] modifica ceva existent (ca la vectorii clasici).

Mai sunt emplace si emplace_back, dar astea mai tarziu le vei putea intelege.

Edited by dani.user, 23 March 2018 - 20:19.


#4
ronuquet

ronuquet

    Guru Member

  • Grup: Senior Members
  • Posts: 16,231
  • Înscris: 22.02.2017
#include<vector> stiu ca se foloseste pt STL-uri.

Iti dau eu acum un exemplu + iterator pentru parcurgerea completa a vectorului:

vector<int>   v;
v.push_back(10);  
v.push_back(20);  
v.push_back(15);
cout << "\n Afisare vector folosind ITERATOR " << endl;
vector<int>::iterator it;
for (it = v.begin(); it != v.end(); it++)
cout << *it << " ";

Toate astea se testeaza in main. Mai sunt si STL-uri de tip map, list...

Edited by ronuquet, 23 March 2018 - 20:22.


#5
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,665
  • Înscris: 29.08.2013
Iterarea incepe cu pozitia 0.

#6
georgecosmin98

georgecosmin98

    Junior Member

  • Grup: Members
  • Posts: 84
  • Înscris: 26.11.2017
Nu m-am exprimat foarte concis, cand am spus "a salva" m-am referit la a adauga in vector o valoare (in cazul meu citita din fisier.

#7
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,445
  • Înscris: 10.08.2005

 sftpdt, on 23 martie 2018 - 20:27, said:

Iterarea incepe cu pozitia 0.
asta daca iti pasa de indecsi, dar fiind din clasa vector, incepe de la begin

Edited by MarianG, 23 March 2018 - 20:37.


#8
jegmihai

jegmihai

    Senior Member

  • Grup: Senior Members
  • Posts: 11,536
  • Înscris: 03.09.2013
Vezi aici mai multe detalii: http://www.cplusplus.../vector/vector/

Ca idee, inainte de a incepe sa folosesti std::vector, asigura-te ca stapanesti bine pointerii si alocarea dinamica a memoriei . Astfel folosirea lui std::vector va fi mult mai naturala.

#9
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007

 georgecosmin98, on 23 martie 2018 - 20:35, said:

Nu m-am exprimat foarte concis, cand am spus "a salva" m-am referit la a adauga in vector o valoare (in cazul meu citita din fisier.

Faci asta deja.

#10
georgecosmin98

georgecosmin98

    Junior Member

  • Grup: Members
  • Posts: 84
  • Înscris: 26.11.2017
Problema e ca daca afisez vectorul nu imi afiseaza nimic, decat la v (cel de tipul), dar valori reziduale

#11
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
Ruleaza programul pas cu pas si vezi ce se intampla.

#12
georgecosmin98

georgecosmin98

    Junior Member

  • Grup: Members
  • Posts: 84
  • Înscris: 26.11.2017
Nu imi afiseaza nimic la n(nume), p(prenume), decat la v ceva valoare reziduala.

#13
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
Prin pas cu pas ma refer la debugging, linie cu linie.
  • Apesi F9 pe prima linie din main, adaugand un breakpoint
  • Pornesti aplicatia din Visual Studio (implicit o porneste cu debuggerul atasat)
  • Aplicatia se opreste cand ajunge la acel breakpoint
  • Apesi F10 trecand pas cu pas de la o linie la alta
  • Pui mouse-ul peste diverse variabile, observand cum se modifica continutul acestora


#14
georgecosmin98

georgecosmin98

    Junior Member

  • Grup: Members
  • Posts: 84
  • Înscris: 26.11.2017
Ma scuzati, probabil trebuie sa i-au o pauza. Am avut o mica erroare (o litera diferita in clasa) si din cauza ei nu imi afisa nimic. Programul merge bine, ma gandeam ca nu am inteles eu bine cum se face adaugarea in std::vector.

Aceste STL-uri or sa ma ajute mult in scrierea unui proiect pentru facultate (un fel de baza de date) pentru ca nu imi mai trebuie alocare/dealocare de memorie la fiecare adaugare/stergere + ca o sa fie si mai putin cod de scris. Pe langa toate aceste lucruri nici marimea vectorului nu mai e asa importanta avand functii ca:

vector.size()
v.begin()
v.end()

@dani.user

Stiu sa fac debug, problema era ca imi citea corect din fisier, dar cand era vorba sa le afiseze o dadea in bara si ma gandeam ca nu am inteles eu bine ce face acel push_back.

Edited by georgecosmin98, 23 March 2018 - 21:17.


#15
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
Desigur. Tehnologia evolueaza. Cand vezi ceva prea repetitiv iti pui imediat intrebarea cum ai putea optimiza.

#16
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
Incurajam topicuri separate: https://forum.softpe...rul-unui-meniu/

#17
andreim77

andreim77

    Senior Member

  • Grup: Senior Members
  • Posts: 4,235
  • Înscris: 11.04.2006

 ronuquet, on 23 martie 2018 - 20:22, said:

#include<vector> stiu ca se foloseste pt STL-uri.

Toate astea se testeaza in main. Mai sunt si STL-uri de tip map, list...

ce-s alea stl-uri? Posted Image

#18
georgecosmin98

georgecosmin98

    Junior Member

  • Grup: Members
  • Posts: 84
  • Înscris: 26.11.2017
STL-urile (Standard Template Library) sunt niste librari/biblioteci, gen <String> <iostream> <fstream> s.a.m.d.

Sunt folosite pentru a "standardiza" si pentru a se scrie mai rapid un program. (sper ca nu ma insel)

de exemplu: mai sus am folosit o functie din biblioteca <vector>, ci anume vector< tip de date> nume parametru. Aceasta functie e echivalenta cu o citire dinamica de vector (alocare/realocare/dealocare de memorie).  Mai multe nu stiu nici eu pentru ca de aproximativ 2 saptamani am "dat" peste stl-uri

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate