Cum salvez elemente in std::vector
Last Updated: Mar 29 2018 21:38, Started by
georgecosmin98
, Mar 23 2018 20:02
·
0
#1
Posted 23 March 2018 - 20:02
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) |
#3
Posted 23 March 2018 - 20:19
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
Posted 23 March 2018 - 20:22
#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. |
#6
Posted 23 March 2018 - 20:35
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
Posted 23 March 2018 - 20:36
#8
Posted 23 March 2018 - 20:39
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
Posted 23 March 2018 - 20:46
#10
Posted 23 March 2018 - 20:54
Problema e ca daca afisez vectorul nu imi afiseaza nimic, decat la v (cel de tipul), dar valori reziduale
|
|
#12
Posted 23 March 2018 - 21:03
Nu imi afiseaza nimic la n(nume), p(prenume), decat la v ceva valoare reziduala.
|
#13
Posted 23 March 2018 - 21:10
Prin pas cu pas ma refer la debugging, linie cu linie.
|
#14
Posted 23 March 2018 - 21:15
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
Posted 23 March 2018 - 21:18
Desigur. Tehnologia evolueaza. Cand vezi ceva prea repetitiv iti pui imediat intrebarea cum ai putea optimiza.
|
|
#16
Posted 23 March 2018 - 21:35
Incurajam topicuri separate: https://forum.softpe...rul-unui-meniu/
|
#17
Posted 27 March 2018 - 12:03
#18
Posted 27 March 2018 - 19:53
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