Care este diferența dintre vectorul <int> v (N) și vectorul <int> v [N]?


Răspunsul 1:

Vedeți câteva moduri de a juca cu inițializarea unui vector și prin aceasta veți primi, de asemenea, răspuns la întrebarea dvs.

std :: vector  v

Aici, pur și simplu inițializezi un vector v cu dimensiunea 0 (pe mașina mea, dimensiunea nu este specificată de standarde).

std :: vector  v = {1, 2, 3, 4};

Analog la int array [] = {1, 2, 3, 4}, dar necesită c ++ 11.

std :: vector  v (k)

Ca și primul, cu excepția aici specificați dimensiunea inițială ca un număr întreg k. De asemenea, în mașina mea, fiecare element al vectorului este inițializat la 0, dar nu știu dacă acesta este comportamentul standard.

std :: vector  v (k, n)

Ca și precedentul, cu excepția aici specificați valoarea (n) cu care să inițializați fiecare element al vectorului.

std :: vector  v [k]

Aici, creați un tablou de vectori cu dimensiunea de k, fiecare vector are dimensiunea implicită (0 în mașina mea).

std :: vector > v (k, std :: vector  (l, n))

Creați un vector de vectori (vă amintiți de cele 2 tablouri 2d) de dimensiunea k * l, fiecare „celulă” inițializată la n.

În plus, puteți experimenta combinând cele menționate mai sus, de fapt este destul de distractiv.

Notă: tipul de date „int” este doar de exemplu, poate fi orice tip de date valabil.


Răspunsul 2:

Ori de câte ori declaram un vector ca:

vector  v;

Here,wedonotspecifythesizeofourvector.Wheneverwejustwanttoaddanelementwejustpushitintothevectorusingthev.push[math]back(val)[/math]function(wherevalisthevalueyouwanttopush).Here, we do not specify the size of our vector. Whenever we just want to add an element we just push it into the vector using the v.push_[math]back(val)[/math] function (where val is the value you want to push).

Supposeyouhaventaddedanyelementsintothevector.Now,ifyougoonaccessanyelementpositionlikev[0]or[math]v[7][/math]likeonecanwhenhedeclaresanarray,youwillgetaruntimeerror.Why?Becausevectorsaredynamicinnature.Since,youhaventdeclaredanysizeorpushedanyelementitssizeiszero.Sonoelementexistsrightnow.Suppose you haven't added any elements into the vector. Now, if you go on access any element position like v[0] or [math]v[7][/math] like one can when he declares an array, you will get a runtime error. Why? Because vectors are dynamic in nature. Since, you haven't declared any size or pushed any element it's size is zero. So no element exists right now.

Dar dacă îl declarați folosind:

vector  v (N);

ThecompilerwouldthereonlycreateandynamicarrayofsizeNwithallvaluesinitializedtozero.Now,youcanrandomlyaccesselementsbutonlyfromv[0]to[math]v[N1][/math].But,ifyouwanttoaddmorethanNelementsthenyoucananytimeusethe[math]push[/math][math]back()[/math]functiontoaddelements.The compiler would there only create an dynamic array of size N with all values initialized to zero. Now, you can randomly access elements but only from v[0] to [math]v[N-1][/math]. But, if you want to add more than N elements then you can anytime use the[math] push[/math]_[math]back()[/math] function to add elements.

Acum, venind la

vector  v [N];

ItcreatesastaticarrayofNvectorsofthefirsttypei.e.v[0]isnowawholenewanddifferentvectorthanv[1]whichistotallydifferentthan[math]v[2][/math]andsoon.Ifyouwanttopushavalueintothe1stvectorthatis[math]v[0][/math],youwilldoitby[math]v[0].push[/math][math]back(val)[/math].Toaccessthatelementyouwillcallitby[math]v[0][0][/math](kindofa2dmatrix,isntit?!).So,basicallyitisanarrayofinitiallyemptyvectorstowhichyoucanaddelements.Theseareveryusefulwhileyouwanttoimplementgraphswhereeachnodehasitsownvectorandthenodestowhichitisjoinedarepushedintothatparticularnodesvector.It creates a static array of N vectors of the first type i.e. v[0] is now a whole new and different vector than v[1] which is totally different than [math]v[2][/math] and so on. If you want to push a value into the 1st vector that is [math]v[0][/math], you will do it by [math]v[0].push[/math]_[math]back(val)[/math]. To access that element you will call it by [math]v[0][0] [/math](kind of a 2d matrix, isn't it?!). So, basically it is an array of initially empty vectors to which you can add elements. These are very useful while you want to implement graphs where each node has it's own vector and the nodes to which it is joined are pushed into that particular node's vector.

Sper sa obtii rostul!

Simțiți-vă liber să întrebați orice întrebare :).