C++ valodā Vector ir viendimensijas datu struktūra, kas dinamiski palielinās, pamatojoties uz prasībām. Datu organizēšana (ievietošana/modifikācija/dzēšana) šajā datu struktūrā var tikt veikta efektīvi. Tās lietojumprogrammas ietver:
- Matemātisko vektoru attēlošana zinātnes un inženierijas lietojumos
- Izmantojot šo datu struktūru, var ieviest rindas, stekus utt.
Lielākā daļa parasto CRUD darbību un funkciju, kas saistītas ar šo datu struktūru, ir detalizēti apskatītas scenārijā, izmantojot sintaksi un koda fragmentus.
Satura tēma:
- Elementa ievietošana vektorā
- Ievietojiet vektorā vairākus elementus
- Piekļūstiet elementiem no vektora
- Atjauniniet elementu vektorā
- Noņemiet konkrētu elementu no vektora
- Noņemiet visus elementus no vektora
- Vektoru savienība
- Vektoru krustpunkts
- Pārbaudiet, vai vektors ir tukšs vai nav
- Pārvietojiet vektoru, izmantojot Const_Iterator
- Pārvietojiet vektoru, izmantojot Reverse_Iterator
- Ievietojiet elementus vektorā
- Izspiediet elementus no vektora
- Apmainiet vektorus
- Atnesiet pirmo elementu no vektora
- Atnesiet pēdējo elementu no vektora
- Piešķiriet vektoram jaunas vērtības
- Paplašiniet vektoru, izmantojot Emplace()
- Paplašiniet vektoru, izmantojot Emplace_Back()
- Maksimālais vektora elements
- Minimālais vektora elements
- Elementu summa vektorā
- Divu vektoru elementārā reizināšana
- Divu vektoru punktu reizinājums
- Pārvērtiet komplektu par vektoru
- Noņemiet dublētos elementus
- Pārvērtiet vektoru komplektā
- Noņemiet tukšās virknes
- Teksta failā ierakstiet vektoru
- Izveidojiet vektoru no teksta faila
Elementa ievietošana vektorā
The std::vector::insert() funkcija C++ STL tiek izmantota, lai ievietotu elementus norādītajā vietā.
Sintakse:
vektors. ievietot ( pozīcija, elements ) ;Izmantosim šo funkciju un nodosim pirmo pozīciju kā parametru, kas norāda vietu, kur elements jāievieto, un norādīsim elementu kā otro parametru.
Funkciju begin () šeit var izmantot, lai atgrieztu iteratoru, kas norāda uz ievades vektora pirmo elementu. Pievienojot šai funkcijai pozīciju, elements tiek ievietots šajā pozīcijā.
Izveidosim string tipa vektoru “students_names” un ievietosim divas virknes pirmajā un otrajā pozīcijā vienu pēc otras, izmantojot funkciju insert().
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Vektora inicializācija - studentu_vārdi
vektors < virkne > studentu_vārdi ;
cout << 'Esošais vektors: \n ' ;
priekš ( auto i : studentu_vārdi ) cout << i << endl ;
// Pirmajā pozīcijā ievietot 'Sravan Kumar'.
studentu_vārdi. ievietot ( studentu_vārdi. sākt ( ) + 0 , 'Šravans Kumars' ) ;
// Otrajā pozīcijā ievietot 'Sravan Kumar'.
studentu_vārdi. ievietot ( studentu_vārdi. sākt ( ) + 1 , 'Lalitha' ) ;
cout << 'Galīgais vektors: \n ' ;
priekš ( auto j : studentu_vārdi ) cout << j << endl ;
}
Izvade:
Iepriekš vektors “studentu_nosaukumi” bija tukšs. Pēc ievietošanas vektorā ir divi elementi.
Ievietojiet vektorā vairākus elementus
Šajā scenārijā mēs izmantojam to pašu funkciju, kas ir std::vector::insert(). Bet mums ir jānodod papildu/atšķirīgi parametri vienai un tai pašai funkcijai, lai vektorā ievietotu vairākus elementus.
1. scenārijs: viena elementa ievietošana vairākas reizes
Šajā scenārijā mēs pievienojam vienu un to pašu elementu vairākas reizes.
Sintakse:
vektors. ievietot ( pozīcija, izmērs, elements ) ;Lai to izdarītu, izmērs kā otrais parametrs ir jānodod funkcijai insert(). Kopējais parametru skaits, kas tiek nodots šai funkcijai, ir trīs.
Šeit:
- Pozīcijas parametrs norāda ievietojamo elementa pozīciju. Ja izmērs ir lielāks par 1, sākuma pozīcijas indekss būs pozīcija.
- Lieluma parametrs norāda, cik reižu elements ir jāievieto.
- Elementa parametrs ņem elementu, kas jāievieto vektorā.
Apsveriet vektoru “studentu_nosaukumi” ar divām virknēm. Piecas reizes ievietojiet “Lavanya” virknes otrajā pozīcijā.
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Vektora inicializācija - studentu_vārdi
vektors < virkne > studentu_vārdi { 'Šravans Kumars' , 'Lalitha' } ;
cout << 'Esošais vektors: \n ' ;
priekš ( auto i : studentu_vārdi ) cout << i << endl ;
// Ievietojiet 'Lavanya' otrajā pozīcijā 5 reizes
studentu_vārdi. ievietot ( studentu_vārdi. sākt ( ) + 1 , 5 , 'Lavanya' ) ;
cout << ' \n Galīgais vektors: \n ' ;
priekš ( auto j : studentu_vārdi ) cout << j << endl ;
}
Izvade:
Esošajā vektorā “Sravan Kumar” ir pirmajā pozīcijā, bet “Lalitha” – otrajā pozīcijā. Piecreiz ievietojot “Lavanya” (no otrās pozīcijas uz sesto), “Lalitha” pacēlās uz septīto pozīciju (pēdējo).
2. scenārijs: vairāku elementu ievietošana
Šajā scenārijā mēs pievienojam dažādus elementus vienlaikus no cita vektora. Mēs arī šeit izmantojam to pašu funkciju, taču mainīsies sintakse un parametri.
Sintakse:
vektors. ievietot ( pozīcija, pirmais_iterators, otrais_iterators ) ;Lai to izdarītu, mums ir jānodod izmērs kā otrais parametrs funkcijai insert(). Kopējais šai funkcijai nodoto parametru skaits ir trīs.
Šeit:
- Pozīcijas parametrs norāda ievietojamo elementa pozīciju.
- “first_iterator” norāda sākuma pozīciju, no kuras elementi jāievieto (pamatā, izmantojot start() funkciju, tiek atgriezts iterators, kas norāda uz pirmo elementu, kas atrodas konteinerā).
- “Second_iterator” norāda beigu pozīciju, līdz kurai elementi jāievieto (pamatā, izmantojot end() funkciju, tiek atgriezts iterators, kas norāda blakus pēdējam konteinerā esošajam punktam).
Izveidojiet divus vesela skaitļa vektorus, “marks1” un “marks2”. Ievietojiet visus elementus, kas atrodas vektorā “marks2” vektora “marks1” pirmajā pozīcijā.
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Vektora inicializācija - atzīmes1
vektors < starpt > atzīmes1 { 100 , 89 , 90 , 78 , 98 } ;
cout << 'Pirmais vektors: \n ' ;
priekš ( auto i : atzīmes1 ) cout << i << endl ;
// Vektora inicializācija - atzīmes2
vektors < starpt > atzīmes2 { 56 , Četri, pieci , 65 } ;
cout << 'Otrais vektors: \n ' ;
priekš ( auto j : atzīmes2 ) cout << j << endl ;
atzīmes1. ievietot ( sākt ( atzīmes1 ) , sāc ( atzīmes2 ) , beigas ( atzīmes2 ) ) ;
// Galīgais vektors
cout << 'Pirmais gala vektors: \n ' ;
priekš ( auto x : atzīmes1 )
cout << x << ' ' ;
}
Izvade:
Pirmajā vektorā (marks1) ir pieci elementi, bet otrajā vektorā (marks2) ir trīs elementi. Mēs nodevām sākuma (atzīmes1), sākuma (atzīmes2), beigu (atzīmes2) parametrus funkcijai “insert”, lai visi elementi, kas atrodas otrajā vektorā, tiktu iterēti un ievietoti pirmajā vektorā sākumā. Tātad, pirmajā vektorā ir astoņi elementi.
Piekļūstiet elementiem no vektora
1. Izmantojot [] operatoru
Dažos gadījumos jums var būt prasība atgriezt tikai konkrētus elementus no vektora. Visu elementu atgriešana nav nepieciešama. Tātad, lai atgrieztu tikai konkrētus elementus, kuru pamatā ir indekss, tiek izmantots indeksa operators un at() funkcijas.
Sintakse:
vektors [ indeksa_pozīcija ]Programmā C++ jebkurai datu struktūrai indeksēšana sākas no 0. Ja elements neeksistē, tas atgriežas tukšs (nav kļūdas vai tiek parādīts brīdinājums).
Apsveriet “produktu” vektoru ar pieciem vienumiem. Piekļūstiet visiem elementiem pa vienam, izmantojot indeksa pozīciju.
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - produkti ar 5 virknēm
vektors < virkne > produktiem { 'ziepes' , 'šampūns' , 'eļļa' , 'augļi' , 'dārzeņi' } ;
//Piekļuve elementiem no produktiem
cout << 'Pirmais elements:' << produktiem [ 0 ] << endl ;
cout << 'Otrais elements:' << produktiem [ 1 ] << endl ;
cout << 'Trešais elements:' << produktiem [ 2 ] << endl ;
cout << 'Ceturtais elements:' << produktiem [ 3 ] << endl ;
cout << 'Piektais elements:' << produktiem [ 4 ] << endl ;
// Mēģiniet piekļūt 9. elementam
cout << 'Devītais elements:' << produktiem [ 8 ] << endl ;
}
Izvade:
Indeksā 8 nav neviena elementa. Tātad tiek atgriezts tukšs.
2. Funkcijas At() izmantošana
At() ir dalībnieka funkcija, kas ir līdzīga iepriekšējam lietošanas gadījumam, taču tā atgriež “std::out_of_range” izņēmumu, ja tai tiek nodrošināts indekss ārpus diapazona.
Sintakse:
vektors. plkst ( indeksa_pozīcija )Mums ir jānodod indeksa pozīcija šai funkcijai.
Apsveriet “produktu” vektoru ar pieciem vienumiem. Piekļūstiet visiem elementiem pa vienam, izmantojot indeksa pozīciju, un mēģiniet piekļūt elementam, kas atrodas 9. pozīcijā.
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - produkti ar 5 virknēm
vektors < virkne > produktiem { 'ziepes' , 'šampūns' , 'eļļa' , 'augļi' , 'dārzeņi' } ;
//Piekļuve elementiem no produktiem
cout << 'Pirmais elements:' << produktiem. plkst ( 0 ) << endl ;
cout << 'Otrais elements:' << produktiem. plkst ( 1 ) << endl ;
cout << 'Trešais elements:' << produktiem. plkst ( 2 ) << endl ;
cout << 'Ceturtais elements:' << produktiem. plkst ( 3 ) << endl ;
cout << 'Piektais elements:' << produktiem. plkst ( 4 ) << endl ;
//Piekļuve elementiem, kas nav vektorā
cout << 'Devītais elements:' << produktiem. plkst ( 8 ) << endl ;
}
Izvade:
Piekļūstot 9. elementam, rodas kļūda:
terminate tiek izsaukts pēc instances izmešanas 'std::out_of_range'kas ( ) : vektors :: _M_diapazona_pārbaude : __n ( kurš ir 8 ) >= šis - > Izmērs ( ) ( kurš ir 5 )
Elementa atjaunināšana vektorā
1. Izmantojot [] operatoru
Izmantojot indeksa pozīciju, mēs varam atjaunināt elementu vektorā. Operators [] ieņem atjaunināmā elementa indeksa pozīciju. Jaunais elements tiks piešķirts šim operatoram.
Sintakse:
Vektors [ indeksa_pozīcija ] = ElementsApsveriet vektoru “studenta atzīmes” ar piecām vērtībām. Atjauniniet 1. un 3. rādītājos esošos elementus.
#include#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - student_marks
vektors < starpt > studentu_atzīmes { 98 , 78 , 90 , 67 , 89 } ;
cout << 'Esošās zīmes:' << endl ;
priekš ( starpt itr : studentu_atzīmes )
cout << itr << endl ;
// Atjauniniet elementu indeksā-3 ar 100
studentu_atzīmes [ 3 ] = 100 ;
// Atjauniniet elementu indeksā-1 ar 60
studentu_atzīmes [ 1 ] = 60 ;
cout << 'Gala atzīmes:' << endl ;
priekš ( starpt itr : studentu_atzīmes )
cout << itr << endl ;
}
Izvade:
Mēs redzam, ka pēdējais vektors satur atjaunināšanas elementus indeksos 1 un 3.
2. Funkcijas At() izmantošana
Līdzīgi kā indeksa operators, at() būtībā ir dalībnieka funkcija, kas atjaunina vērtību, pamatojoties uz indeksu iteratorā. Ja šajā funkcijā norādītais indekss nepastāv, tiek izmests izņēmums “std::out_of_range”.
vektors. plkst ( indeksa_pozīcija ) = ElementsApsveriet “produktu” vektoru ar pieciem vienumiem. Atjauniniet visus vektorā esošos elementus ar citiem elementiem.
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - produkti ar 5 virknēm
vektors < virkne > produktiem { 'ziepes' , 'šampūns' , 'eļļa' , 'augļi' , 'dārzeņi' } ;
cout << 'Esošie produkti:' << endl ;
priekš ( virkne itr : produktiem )
cout << itr << endl ;
//Notiek visu virkņu atjaunināšana
produktiem. plkst ( 0 ) = 'Kūka' ;
produktiem. plkst ( 1 ) = 'šokolāde' ;
produktiem. plkst ( 2 ) = 'augļi' ;
produktiem. plkst ( 3 ) = 'Sīpoli' ;
produktiem. plkst ( 4 ) = 'Bezalkoholiskie dzērieni' ;
cout << ' \n Gala produkti: ' << endl ;
priekš ( virkne itr : produktiem )
cout << itr << endl ;
}
Izvade:
Noņemiet konkrētu elementu no vektora
Programmā C++, std::vector::dzēst() funkcija tiek izmantota, lai noņemtu konkrētu elementu/elementu diapazonu no vektora. Elementi tiek noņemti, pamatojoties uz iteratora pozīcijām.
Sintakse:
vektors. dzēst ( iteratora pozīcija )Apskatīsim sintaksi konkrētā elementa noņemšanai no vektora. Mēs varam izmantot sākuma() vai end() funkcijas, lai iegūtu noņemamajā vektorā esošā elementa pozīciju.
Apsveriet “produktu” vektoru ar pieciem vienumiem.
- Noņemiet trešo elementu, norādot sākuma() iteratoru. Begin() norāda uz pirmo vektora elementu. Ja šai funkcijai pievienojam divus, tas norāda uz trešo elementu.
- Noņemiet pēdējo elementu, norādot end() iteratoru. End() norāda uz pēdējo vektora elementu.
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - produkti ar 5 virknēm
vektors < virkne > produktiem { 'ziepes' , 'šampūns' , 'eļļa' , 'augļi' , 'dārzeņi' } ;
cout << 'Esošie produkti:' << endl ;
priekš ( virkne itr : produktiem )
cout << itr << endl ;
// Noņemt 3. elementu
produktiem. dzēst ( produktiem. sākt ( ) + 2 ) ;
cout << ' \n Pēc trešā elementa noņemšanas: \n ' ;
priekš ( virkne itr : produktiem )
cout << itr << endl ;
// Noņemt pēdējo elementu
produktiem. dzēst ( produktiem. beigas ( ) ) ;
cout << ' \n Pēc pēdējā elementa noņemšanas: \n ' ;
priekš ( virkne itr : produktiem )
cout << itr << endl ;
}
Izvade:
Tagad vektorā “produkti” ir tikai trīs elementi (“ziepes”, “šampūns”, “augļi”).
Noņemiet visus elementus no vektora
1. scenārijs: noņemiet elementu diapazonu no vektora
Izmantosim funkciju std::vector::erase(), lai noņemtu vairākus elementus diapazonā.
Sintakse:
vektors. dzēst ( iterators pirmais, iterators pēdējais )Divi iteratori (begin () norāda uz pirmo elementu un end () norāda uz pēdējo elementu funkcijām) tiek izmantoti, lai norādītu diapazonu.
Apsveriet 'produktu' vektoru ar pieciem vienumiem un noņemiet visus elementus no otrās pozīcijas. Lai to panāktu, pirmais iterators ir sākums (produkti)+1, kas norāda uz otro elementu, un otrais iterators ir beigas (produkti).
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - produkti ar 5 virknēm
vektors < virkne > produktiem { 'ziepes' , 'šampūns' , 'eļļa' , 'augļi' , 'dārzeņi' } ;
cout << 'Esošie produkti:' << endl ;
priekš ( virkne itr : produktiem )
cout << itr << endl ;
// Noņemiet visus elementus no otrās pozīcijas
produktiem. dzēst ( sākt ( produktiem ) + 1 , beigas ( produktiem ) ) ;
cout << ' \n Gala produkti: \n ' ;
priekš ( virkne itr : produktiem )
cout << itr << endl ;
}
Izvade:
Tagad ir tikai viens elements (“ziepes”), kas atrodas “produktu” vektorā.
2. scenārijs: noņemiet visus elementus no vektora
Izmantosim std::vector::clear() funkcija, lai noņemtu visus elementus no vektora.
Sintakse:
vektors. skaidrs ( )Šai funkcijai netiek nodoti parametri.
Apsveriet to pašu vektoru, kas tika izmantots pirmajā scenārijā, un noņemiet visus elementus, izmantojot funkciju clear().
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - produkti ar 5 virknēm
vektors < virkne > produktiem { 'ziepes' , 'šampūns' , 'eļļa' , 'augļi' , 'dārzeņi' } ;
cout << 'Esošie produkti:' << endl ;
priekš ( virkne itr : produktiem )
cout << itr << endl ;
// Noņemiet no produktiem visus elementus
produktiem. skaidrs ( ) ;
cout << ' \n Gala produkti: \n ' ;
priekš ( virkne itr : produktiem )
cout << itr << endl ;
}
Izvade:
Mēs redzam, ka vektorā “produkti” nav elementu.
Vektoru savienība
Ir iespējams veikt UNION darbību vektoros, izmantojot funkciju std::set_union(). Savienība atgriež unikālos elementus no vektoriem, ignorējot dublētos elementus. Mums ir jānodod abi iteratori šai funkcijai. Līdztekus tam ir jāiziet izvades iterators, kas saglabā rezultātu, ko atgriež abi iteratori.
Sintakse:
set_union ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator res ) ;Šeit:
- “First1” norāda uz pirmā iteratora (vektora) pirmo elementu.
- “Pēdējais1” norāda uz pirmā iteratora (vektora) pēdējo elementu.
- “First2” norāda uz otrā iteratora (vektora) pirmo elementu.
- “Pēdējais2” norāda uz otrā iteratora (vektora) pēdējo elementu.
Izveidojiet divus vesela skaitļa vektorus – “subjekti1” un “subjekti2”.
- Kārtojiet divus vektorus, izmantojot funkciju sort(), nododot iteratorus.
- Izveidojiet izejas vektoru (iteratoru).
- Atrodiet šo divu vektoru savienību, izmantojot funkciju std::set_union(). Izmantojiet begin() kā pirmo iteratoru un end() kā pēdējo iteratoru.
- Atkārtojiet izvades vektoru, lai parādītu funkcijas atgrieztos elementus.
#include
#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - atzīmes1
vektors < starpt > atzīmes1 = { 100 , 90 , 80 , 70 , 60 } ;
// Izveidot vektoru - atzīmes2
vektors < starpt > atzīmes2 = { 80 , 90 , 60 , 70 , 100 } ;
// Kārtojiet abus vektorus
kārtot ( atzīmes1. sākt ( ) , atzīmes1. beigas ( ) ) ;
kārtot ( atzīmes2. sākt ( ) , atzīmes2. beigas ( ) ) ;
vektors < starpt > izvadvektors ( atzīmes1. Izmērs ( ) + atzīmes2. Izmērs ( ) ) ;
vektors < starpt > :: iterators es, s ;
i = set_union ( atzīmes1. sākt ( ) , atzīmes1. beigas ( ) ,
atzīmes2. sākt ( ) ,atzīmes2. beigas ( ) ,
izvadvektors. sākt ( ) ) ;
cout << ' \n Marks1 U Marks2: \n ' ;
priekš ( s = izvadvektors. sākt ( ) ; s ! = i ; ++ s )
cout << * s << ' ' << ' \n ' ;
}
Izvade:
Abos vektoros (subjekti1 un subjekti2) ir tikai pieci unikāli elementi.
Vektoru krustpunkts
Divu vektoru krustpunkta atrašana var būt iespējama, izmantojot funkciju std::set_intersection(). Krustojums atgriež elementus, kas atrodas abos vektoros.
Sintakse:
set_krustojums ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator res ) ;Parametrus, kas tiek nodoti funkcijai set_union(), var nodot arī šai funkcijai set_intersection().
Izveidojiet divus vesela skaitļa vektorus – “subjekti1” un “subjekti2”.
- Kārtojiet divus vektorus, izmantojot funkciju sort(), nododot iteratorus.
- Izveidojiet izejas vektoru (iteratoru).
- Atrodiet šo divu vektoru krustpunktu, izmantojot funkciju std::set_intersection(). Izmantojiet begin() kā pirmo iteratoru un end() kā pēdējo iteratoru.
- Atkārtojiet izvades vektoru, lai parādītu funkcijas atgrieztos elementus.
#include
#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - atzīmes1
vektors < starpt > atzīmes1 = { 100 , 10 , 80 , 40 , 60 } ;
// Izveidot vektoru - atzīmes2
vektors < starpt > atzīmes2 = { piecdesmit , 90 , 60 , 10 , 100 } ;
// Kārtojiet abus vektorus
kārtot ( atzīmes1. sākt ( ) , atzīmes1. beigas ( ) ) ;
kārtot ( atzīmes2. sākt ( ) , atzīmes2. beigas ( ) ) ;
vektors < starpt > izvadvektors ( atzīmes1. Izmērs ( ) + atzīmes2. Izmērs ( ) ) ;
vektors < starpt > :: iterators es, s ;
i = set_krustojums ( atzīmes1. sākt ( ) , atzīmes1. beigas ( ) ,
atzīmes2. sākt ( ) ,atzīmes2. beigas ( ) ,
izvadvektors. sākt ( ) ) ;
cout << ' \n Marks1 ∩ Marks2: \n ' ;
priekš ( s = izvadvektors. sākt ( ) ; s ! = i ; ++ s )
cout << * s << ' ' << ' \n ' ;
}
Izvade:
Abos vektoros (subjekti1 un subjekti2) ir tikai trīs elementi.
Pārbaudiet, vai vektors ir tukšs vai nav
Pirms darba ar vektoriem ir svarīgi pārbaudīt, vai vektors ir tukšs vai nē. Laba prakse programmatūras projektos ir arī pārbaudīt, vai vektors ir tukšs, pirms veicat tādas darbības kā CRUD darbības utt.
1. Std::vector::empty()
Šī funkcija atgriež 1, ja vektors ir tukšs (nesatur nevienu elementu). Pretējā gadījumā tiek atgriezts 0. Šai funkcijai netiek nodots neviens parametrs.
2. Izmantojot Std::vector::size()
Funkcija std::vector::size() atgriež veselu skaitli, kas apzīmē vektorā esošo elementu kopējo skaitu.
Izveidojiet divus vektorus – “college1” un “college2”. “College1” satur piecus elementus, un “college2” ir tukšs. Lietojiet abas funkcijas abiem vektoriem un pārbaudiet izvadi.
#include#include
#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - koledža1
vektors < virkne > koledža 1 = { 'koledža-A' , 'koledža-B' , 'koledža-C' , 'koledža-D' , 'koledža-E' } ;
// Izveidot vektoru - koledža2
vektors < virkne > koledža2 ;
// tukšs ()
cout << koledža 1. tukšs ( ) << endl ;
cout << koledža2. tukšs ( ) << endl ;
// Izmērs()
cout << koledža 1. Izmērs ( ) << endl ;
cout << koledža2. Izmērs ( ) << endl ;
}
Izvade:
Funkcija tukša () atgriež 0 “college1” un 1 “koledža2”. Funkcija size() atgriež piecus “college1” un 0 “college2”.
Pārvietojiet vektoru, izmantojot Const_Iterator
Strādājot ar C++ konteineriem, piemēram, kopām, vektoriem utt., ir iespējams atkārtot visus konteinerā esošos elementus, tos nemodificējot. The const_iterator ir viens no iteratoriem, kas sasniedz šo scenāriju. cbegin() (norāda uz pirmo vektora elementu) un cend() (norāda uz pēdējo vektora elementu) ir divas funkcijas, ko nodrošina katrs konteiners, ko izmanto, lai atgrieztu konstanto iteratoru uz sākuma un beigām. konteiners. Atkārtojot vektoru, mēs varam izmantot šīs divas funkcijas.
- Izveidosim vektoru ar nosaukumu “departamenti” ar piecām virknēm.
- Deklarē const_iterator — ctr tipa
. - Atkārtojiet nodaļas, izmantojot iepriekšējo iteratoru, izmantojot cilpu “for”, un parādiet to.
#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - nodaļas
vektors < virkne > nodaļas = { 'Pārdošana' , 'Apkalpošana' ,
'HR' , 'IT' , 'Citi' } ;
vektors < virkne > :: const_iterator ctr ;
// Atkārtojiet departamentus, izmantojot const_iterator - ctr.
priekš ( ctr = nodaļas. cbegin ( ) ; ctr ! = nodaļas. daži ( ) ; ctr ++ ) {
cout << * ctr << endl ;
}
}
Izvade:
Pārvietojiet vektoru, izmantojot Reverse_Iterator
The reverse_iterator ir arī iterators, kas ir līdzīgs const_iterator, taču tas atgriež elementus apgrieztā secībā. rbegin() (norāda uz pēdējo vektora elementu) un rend() (norāda uz pirmo vektora elementu) ir divas funkcijas, ko nodrošina katrs konteiners, ko izmanto, lai atgrieztu konstanto iteratoru uz beigām un sākumu. konteiners.
- Izveidosim vektoru ar nosaukumu “departamenti” ar piecām virknēm.
- Deklarē reverse_iterator — rtr tipa
. - Atkārtojiet nodaļas, izmantojot iepriekšējo iteratoru, izmantojot cilpu “for”, un parādiet to.
#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - nodaļas
vektors < virkne > nodaļas = { 'Pārdošana' , 'Apkalpošana' ,
'HR' , 'IT' , 'Citi' } ;
vektors < virkne > :: reverse_iterator rtr ;
// Atkārtojiet departamentus, izmantojot reverse_iterator - rtr.
priekš ( rtr = nodaļas. rbegin ( ) ; rtr ! = nodaļas. padara ( ) ; rtr ++ ) {
cout << * rtr << endl ;
}
}
Izvade:
Ievietojiet elementus vektorā
Elementu nospiešana vai pievienošana vektoram ir vienvirziena ievietošana, ko var veikt, izmantojot vektors::push_back() funkciju.
Sintakse:
vektors. atgrūst ( elements )Ir nepieciešams elements, kas jāiespiež vektorā kā parametrs.
Izveidosim tukšu vektoru ar nosaukumu “departments” ar piecām virknēm un virzīsim divas virknes vienu pēc otras, izmantojot funkciju push_back().
#include#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Inicializēt vektoru - nodaļas
vektors < virkne > nodaļas ;
cout << 'Faktiskās nodaļas:' << endl ;
priekš ( auto itr = nodaļas. sākt ( ) ; itr ! = nodaļas. beigas ( ) ; ++ itr )
cout << * itr << endl ;
// Nospiediet 'Pārdošana'
nodaļas. atgrūst ( 'Pārdošana' ) ;
// Grūd'
nodaļas. atgrūst ( 'IT' ) ;
cout << ' \n Noslēguma nodaļas:' << endl ;
priekš ( auto itr = nodaļas. sākt ( ) ; itr ! = nodaļas. beigas ( ) ; ++ itr )
cout << * itr << endl ;
}
Izvade:
Pirmkārt, mēs nospiežam “Pārdošana”. Pēc tam “IT” tiek iespiests vektorā. Tagad “nodaļu” vektoram ir divi elementi.
Izspiediet elementus no vektora
Ja vēlaties dzēst pēdējo vektorā esošo vienumu, izmantojot vektors::pop_back() funkcija ir labākā pieeja. Tas izdzēš pēdējo vektorā esošo elementu.
Sintakse:
vektors. pop_back ( )Šai funkcijai nav nepieciešams parametrs. Tas parāda nenoteiktu uzvedību, ja mēģinām izdzēst pēdējo elementu no tukša vektora.
Izveidosim tukšu vektoru ar nosaukumu “departments” ar piecām virknēm un izdzēsīsim pēdējo elementu, izmantojot iepriekšējo funkciju. Parādiet vektoru abos gadījumos.
#include#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Inicializēt vektoru - nodaļas
vektors < virkne > nodaļas = { 'Pārdošana' , 'IT' , 'Apkalpošana' , 'Mārketings' , 'HR' } ;
cout << 'Faktiskās nodaļas:' << endl ;
priekš ( auto itr = nodaļas. sākt ( ) ; itr ! = nodaļas. beigas ( ) ; ++ itr )
cout << * itr << endl ;
// Dzēst pēdējo elementu
nodaļas. pop_back ( ) ;
cout << ' \n Nobeiguma nodaļas:' << endl ;
priekš ( auto itr = nodaļas. sākt ( ) ; itr ! = nodaļas. beigas ( ) ; ++ itr )
cout << * itr << endl ;
}
Izvade:
“HR” ir pēdējais elements, kas atrodas vektorā “departments”. Tātad tas tiek noņemts no vektora, un galīgajā vektorā ir “Pārdošana”, “IT”, “Pakalpojums” un “Mārketings”.
Apmainiet vektorus
The vektors::swap() Funkcija C++ STL tiek izmantota, lai apmainītu visus elementus, kas atrodas divos vektoros.
Sintakse:
pirmais_vektors. mijmaiņa ( otrais_vektors )Tajā nav ņemts vērā vektoru lielums, bet vektoriem jābūt viena veida (ja vektoru veidi atšķiras, tiek parādīta kļūda).
Izveidosim divus vektorus – “augļi” un “dārzeņi” – virknes tipa ar dažādu izmēru. Apmainiet katru no tiem un abos gadījumos parādiet vektorus.
#include#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Inicializēt vektoru - augļus
vektors < virkne > augļiem = { 'Ābols' , 'Mango' } ;
cout << 'Faktiskie augļi:' << endl ;
priekš ( auto itr = augļiem. sākt ( ) ; itr ! = augļiem. beigas ( ) ; ++ itr )
cout << * itr << endl ;
// Inicializēt vektoru - dārzeņi
vektors < virkne > dārzeņus = { 'Kartupeļi' , 'Tomāts' , 'Brinjal' } ;
cout << ' \n Faktiskie dārzeņi:' << endl ;
priekš ( auto itr = dārzeņus. sākt ( ) ; itr ! = dārzeņus. beigas ( ) ; ++ itr )
cout << * itr << endl ;
// Apmainiet elementus abos vektoros
augļiem. mijmaiņa ( dārzeņus ) ;
cout << ' \n Augļi pēc nomaiņas:' << endl ;
priekš ( auto itr = augļiem. sākt ( ) ; itr ! = augļiem. beigas ( ) ; ++ itr )
cout << * itr << endl ;
cout << ' \n Dārzeņi pēc maiņas:' << endl ;
priekš ( auto itr = dārzeņus. sākt ( ) ; itr ! = dārzeņus. beigas ( ) ; ++ itr )
cout << * itr << endl ;
}
Izvade:
Iepriekš vektorā “augļi” ir divi elementi, bet vektorā “dārzeņi” – trīs elementi. Pēc apmaiņas vektorā “augļi” ir trīs elementi, un vektorā “dārzeņi” ir divi elementi.
Atnesiet pirmo elementu no vektora
Dažos gadījumos prasība ir atgriezt tikai pirmo elementu no vektora. Vektora::front() funkcija C++ STL ienes tikai pirmo elementu no vektora.
Sintakse:
vektors. priekšā ( )Šī funkcija neņems nekādus parametrus. Ja vektors ir tukšs, tiek parādīta kļūda.
Izveidosim divus vektorus – “augļus” un “dārzeņus” – virknes tipa un mēģināsim ienest pirmo elementu atsevišķi no abiem vektoriem.
#include#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - augļi ar 2 elementiem
vektors < virkne > augļiem = { 'Ābols' , 'Mango' } ;
// Atgriezt pirmo elementu
cout << augļiem. priekšā ( ) << endl ;
// Inicializēt vektoru - dārzeņi
vektors < virkne > dārzeņus ;
// Mēģiniet atgriezt pirmo elementu
cout << dārzeņus. priekšā ( ) ;
}
Izvade:
'Ābols' ir pirmais elements, kas atrodas 'augļu' vektorā. Tātad, tas tiek atgriezts. Bet kļūda tiek izlaista, mēģinot izgūt pirmo elementu no vektora “dārzeņi”, jo tas ir tukšs.
Atnesiet pēdējo elementu no vektora
Vektora::end() funkcija C++ STL ienes tikai pēdējo elementu no vektora.
Sintakse:
vektors. atpakaļ ( )Šī funkcija neņems nekādus parametrus. Ja vektors ir tukšs, tiek parādīta kļūda.
Izveidosim divus vektorus – “augļi” un “dārzeņi” – virknes tipa un mēģināsim izgūt pēdējo elementu atsevišķi no abiem vektoriem.
#include#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - augļi ar 2 elementiem
vektors < virkne > augļiem = { 'Ābols' , 'Mango' } ;
// Iegūstiet pēdējo elementu
cout << augļiem. atpakaļ ( ) << endl ;
// Inicializēt vektoru - dārzeņi
vektors < virkne > dārzeņus ;
// Mēģiniet ienest pēdējo elementu
cout << dārzeņus. atpakaļ ( ) ;
}
Izvade:
“Mango” ir pēdējais elements, kas atrodas “augļu” vektorā. Tātad, tas tiek atgriezts. Taču tiek parādīta kļūda, mēģinot izgūt pēdējo elementu no vektora “dārzeņi”, jo tas ir tukšs.
Piešķiriet vektoram jaunas vērtības
Dažos gadījumos, ja vēlaties atjaunināt visas vērtības ar jauno vērtību vai izveidot vektoru ar tādām pašām vērtībām, labākā pieeja ir funkcijas vector::assign() izmantošana. Izmantojot šo funkciju, mēs varam:
- Izveidojiet vektoru ar visiem līdzīgiem elementiem
- Pārveidojiet esošo vektoru ar to pašu elementu
Sintakse:
vektors. piešķirt ( izmērs, vērtība )Šai funkcijai ir nepieciešami divi parametri.
Šeit:
- Izmērs norāda piešķiramo elementu skaitu.
- Vērtība norāda piešķiramo elementu.
Izveidosim vektoru ar nosaukumu “marks1” ar piecām vērtībām un atjaunināsim šo vektoru ar četriem elementiem tā, lai visi elementi atjauninātajā vektorā būtu vienādi ar 20.
#include#include
#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - atzīmes1
vektors < starpt > atzīmes1 = { 100 , 90 , 80 , 70 , 60 } ;
cout << 'Faktiskais vektors:' << endl ;
priekš ( starpt i = 0 ; i < atzīmes1. Izmērs ( ) ; i ++ )
cout << atzīmes1 [ i ] << endl ;
atzīmes1. piešķirt ( 4 , divdesmit ) ;
cout << ' \n Atjaunināts vektors:' << endl ;
priekš ( starpt i = 0 ; i < atzīmes1. Izmērs ( ) ; i ++ )
cout << atzīmes1 [ i ] << endl ;
}
Izvade:
Iepriekš vektors satur piecus dažādus elementus. Tagad tajā ir tikai četri elementi, un visi ir vienādi ar 20.
Paplašiniet vektoru, izmantojot Emplace()
Mēs jau zinām, ka jauni elementi tiek dinamiski ievietoti jebkurā vektora pozīcijā. Tas ir iespējams, izmantojot vektoru::emplace() funkciju. Apskatīsim sintaksi un parametrus, ko pieņem šī funkcija.
Sintakse:
vektors. atrašanās vieta ( const_iterator pozīcija, elements )Šai funkcijai tiek nodoti divi obligāti parametri.
Šeit:
- Pirmais parametrs ieņem pozīciju, lai mēs varētu ievietot elementu jebkurā pozīcijā. Pozīciju varam iegūt, izmantojot iteratora funkciju begin() vai end().
- Otrais parametrs ir vektorā ievietojamais elements.
Apsveriet “ķīmisko vielu” vektoru ar diviem elementiem.
- Pirmajā pozīcijā ievietojiet 'Mangāns' - sākums (ķimikālijas)
- Ievietojiet 'Varš' pēdējā pozīcijā - galā (ķīmiskās vielas)
- Trešajā pozīcijā ievietojiet ‘Sulphur’ – start(chemicals)+2
#include
#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - ķīmiskās vielas
vektors < virkne > ķīmiskās vielas = { 'Skābeklis' , 'CO' } ;
cout << 'Faktiskās ķīmiskās vielas:' << endl ;
priekš ( starpt i = 0 ; i < ķīmiskās vielas. Izmērs ( ) ; i ++ )
cout << ķīmiskās vielas [ i ] << endl ;
// Ievietot elementu pirmajā pozīcijā
ķīmiskās vielas. atrašanās vieta ( sākt ( ķīmiskās vielas ) , 'Mangāns' ) ;
// Ievietot elementu pēdējā pozīcijā
ķīmiskās vielas. atrašanās vieta ( beigas ( ķīmiskās vielas ) , 'Varš' ) ;
// Ievietot elementu trešajā pozīcijā
ķīmiskās vielas. atrašanās vieta ( sākt ( ķīmiskās vielas ) + 2 , 'Sērs' ) ;
cout << ' \n Galīgās ķīmiskās vielas:' << endl ;
priekš ( starpt i = 0 ; i < ķīmiskās vielas. Izmērs ( ) ; i ++ )
cout << ķīmiskās vielas [ i ] << endl ;
}
Izvade:
Tagad galīgajā vektorā ir pieci elementi (norādīts nākamajā ekrānuzņēmumā).
Paplašiniet vektoru, izmantojot Emplace_Back()
Elementu var pievienot (pievienojot vektora beigās), ko var izdarīt, izmantojot vektors::emplace_back() funkciju.
Sintakse:
vektors. emplace_back ( elements )Ir obligāti jānodod vektoram pievienojamais elements kā parametrs.
Pievienosim divus elementus vienu pēc otra, izmantojot funkciju emplace_back().
#include#include
#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - ķīmiskās vielas
vektors < virkne > ķīmiskās vielas = { 'Skābeklis' , 'CO' } ;
cout << 'Faktiskās ķīmiskās vielas:' << endl ;
priekš ( starpt i = 0 ; i < ķīmiskās vielas. Izmērs ( ) ; i ++ )
cout << ķīmiskās vielas [ i ] << endl ;
// Ievietojiet mangānu vektora beigās
ķīmiskās vielas. emplace_back ( 'Mangāns' ) ;
// Ievietojiet mangānu vektora beigās
ķīmiskās vielas. emplace_back ( 'Varš' ) ;
cout << ' \n Galīgās ķīmiskās vielas:' << endl ;
priekš ( starpt i = 0 ; i < ķīmiskās vielas. Izmērs ( ) ; i ++ )
cout << ķīmiskās vielas [ i ] << endl ;
}
Izvade:
Tagad galīgajā vektorā ir četri elementi pēc “mangāna” un “vara” pievienošanas.
Maksimālais vektora elements
- Izveidojiet vektoru ar dažiem elementiem.
- Lai atrastu maksimālo vektorā esošo elementu, izmantojiet funkciju *max_element(), kas pieņem divus iteratorus kā argumentus. Šie divi parametri darbojas kā diapazons, un maksimālais elements tiek atgriezts norādītajā diapazonā. Sākuma pozīcija ir begin () un pēdējā pozīcija ir end ().
Apskatīsim vektoru ar nosaukumu “item_costs”, kurā ir piecas veselu skaitļu tipa vērtības un kas atgriež maksimālo elementu.
#iekļaut#include
#include
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - item_costs
vektors < starpt > vienumu_izmaksas = { 8900 , 5677 , 200 , 1000 , 2300 } ;
cout << 'Preču izmaksas: \n ' ;
priekš ( starpt i = 0 ; i < vienumu_izmaksas. Izmērs ( ) ; i ++ )
cout << vienumu_izmaksas [ i ] << endl ;
// Atgriež maksimālo elementu no iepriekš minētā vektora - item_costs
cout << ' \n Maksimālās izmaksas: ' << * max_element ( sākt ( vienumu_izmaksas ) , beigas ( vienumu_izmaksas ) ) ;
}
Izvade:
Šeit 8900 ir maksimālais elements starp visiem elementiem, kas atrodas vektorā “item_costs”.
Minimālais vektora elements
- Izveidojiet vektoru ar dažiem elementiem.
- Lai atrastu vektorā esošo minimālo elementu, izmantojiet funkciju *min_element(), kas pieņem divus iteratorus kā argumentus. Šie divi parametri darbojas kā diapazons, un minimālais elements (mazāks nekā visi pārējie elementi) tiek atgriezts norādītajā diapazonā. Sākuma pozīcija ir begin () un pēdējā pozīcija ir end ().
Izmantojiet to pašu vektoru, kas ir izveidots, lai atrastu maksimālo elementu un atrastu minimālo elementu, izmantojot funkciju *min_element().
#iekļaut#include
#include
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - item_costs
vektors < starpt > vienumu_izmaksas = { 8900 , 5677 , 200 , 1000 , 2300 } ;
cout << 'Preču izmaksas: \n ' ;
priekš ( starpt i = 0 ; i < vienumu_izmaksas. Izmērs ( ) ; i ++ )
cout << vienumu_izmaksas [ i ] << endl ;
// Atgriež minimālo elementu no iepriekš minētā vektora - item_costs
cout << ' \n Minimālās izmaksas: ' << * min_element ( sākt ( vienumu_izmaksas ) , beigas ( vienumu_izmaksas ) ) ;
}
Izvade:
Šeit 200 ir minimālais elements starp visiem elementiem, kas atrodas vektorā “item_costs”.
Elementu summa vektorā
Lai atgrieztu visu vektorā esošo elementu summu, uzkrāt () tiek izmantota funkcija C++ STL. Tas pieņem trīs parametrus. Pirmais parametrs ņem pirmo indeksu, kas apzīmē sākuma elementu diapazonā (norādiet sākuma() iteratoru), bet otrais parametrs ņem pēdējo indeksu, kas apzīmē beigu elementu diapazonā (norādiet end() iteratoru). Visbeidzot, mums ir jānodod summas sākotnējā vērtība (mūsu gadījumā tā ir 0).
uzkrāties ( pirmais_indekss, pēdējais_indekss, sākuma_vērtība ) ;Izveidojiet vektoru ar nosaukumu “item_costs” ar pieciem vesela skaitļa elementiem un aprēķiniet summu.
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru - item_costs
vektors < starpt > vienumu_izmaksas = { 8900 , 5677 , 200 , 1000 , 2300 } ;
cout << 'Preču izmaksas: \n ' ;
priekš ( starpt i = 0 ; i < vienumu_izmaksas. Izmērs ( ) ; i ++ )
cout << vienumu_izmaksas [ i ] << endl ;
// Atgriež visu elementu summu iepriekš minētajā vektorā - item_costs
cout << ' \n Kopējās izmaksas: ' << uzkrāties ( sākt ( vienumu_izmaksas ) , beigas ( vienumu_izmaksas ) , 0 ) ;
}
Izvade:
Summa 8900, 5677, 200, 1000, 2300 ir 18077.
Divu vektoru elementārā reizināšana
- Izveidojiet divus vektorus ar skaitlisko tipu, un diviem vektoriem jābūt vienāda izmēra (kopējais elementu skaits pirmajā vektorā = kopējais elementu skaits, kas atrodas otrajā vektorā).
- Deklarējiet jaunu vektoru un izmantojiet cilpai , veiciet reizināšanas darbību diviem elementiem katrā iterācijā un saglabājiet vērtību izveidotajā vektorā, izmantojot funkciju push_back(). priekš ( starpt itr = 0 ; i < pirmais_vec. Izmērs ( ) ; itr ++ )
- Parādiet elementus, kas atrodas iegūtajā vektorā, atkārtojot to.
{
rezultāts_vektors. atgrūst ( pirmais_vec [ itr ] * sec_thing [ itr ] ) ;
}
Izveidojiet vektoru ar nosaukumu “item_costs” ar pieciem vesela skaitļa elementiem un aprēķiniet summu.
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidojiet divus vektorus - produkti1 un produkti2 ar 5 elementiem katrā
vektors < starpt > produkti 1 = { 10 , divdesmit , 30 , 40 , piecdesmit } ;
vektors < starpt > produkti 2 = { piecdesmit , 40 , 30 , 70 , 60 } ;
vektors < starpt > rezultāts_produkti ;
// Veikt elementāro reizināšanu
priekš ( starpt i = 0 ; i < produkti 1. Izmērs ( ) ; i ++ ) {
rezultāts_produkti. atgrūst ( produkti 1 [ i ] * produkti 2 [ i ] ) ;
}
// Parādīt iegūto vektoru
cout << 'Vektoru reizināšana: \n ' ;
priekš ( starpt res : rezultāts_produkti )
cout << res << endl ;
}
Izvade:
Iterācija - 1 : 10 * piecdesmit => 500Iterācija - 2 : divdesmit * 40 => 800
Iterācija - 3 : 30 * 30 => 900
Iterācija - 4 : 40 * 70 => 2800
Iterācija - 5 : piecdesmit * 60 => 3000
Divu vektoru punktu reizinājums
C++ vektoru gadījumā punktu reizinājums ir definēts kā “divu vektoru secību atbilstošo ierakstu reizinājumu summa”.
Sintakse:
iekšējais_produkts ( Vector1 vispirms, Vector1 pēdējais, Vector2 vispirms, Initial_Val )Izmantojiet funkciju inner_product(), lai atgrieztu punktu preci. Šai funkcijai nepieciešami četri nepieciešamie parametri.
Šeit:
- Pirmais parametrs attiecas uz iteratoru, kas norāda uz pirmā vektora sākumu (norādiet, izmantojot funkciju begin ()).
- Otrais parametrs attiecas uz iteratoru, kas norāda uz pirmā vektora beigām (norādīt, izmantojot end() funkciju).
- Trešais parametrs attiecas uz iteratoru, kas norāda uz otrā vektora sākumu (norādiet, izmantojot funkciju begin ()).
- Sākotnējā vērtība ir jānodod kā pēdējais parametrs, kas ir vesels skaitlis punktu reizinājuma uzkrāšanai.
Izmantojiet to pašu programmu, kas ir izveidota divu vektoru reizināšanai, un izmantojiet funkciju innsr_product(), lai atrastu divu vektoru punktu reizinājumu.
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidojiet divus vektorus - produkti1 un produkti2 ar 5 elementiem katrā
vektors < starpt > produkti 1 = { 10 , divdesmit , 30 , 40 , piecdesmit } ;
vektors < starpt > produkti 2 = { piecdesmit , 40 , 30 , 70 , 60 } ;
// Parādīt iegūto vektoru
cout << “Produktu 1 un produktu 2 punkts: ;
cout << iekšējais_produkts ( sākt ( produkti 1 ) , beigas ( produkti 1 ) , sāciet ( produkti 2 ) , 0 ) ;
}
Izvade:
( 10 * piecdesmit ) + ( divdesmit * 40 ) + ( 30 * 30 ) + ( 40 * 70 ) + ( piecdesmit * 60 )=> 500 + 800 + 900 + 2800 + 3000
=> 8000
Pārvērtiet komplektu par vektoru
Ir daudzi veidi, kā pārvērst kopu vektorā, nododot vektorā visus komplektā izvirzītos elementus. Labākais un vienkāršākais veids ir izmantot funkciju std::copy().
Sintakse
std :: kopiju ( SourceIterator vispirms, sourceIterator pēdējais, destinationIterator pirmais )Izmantojiet std::copy() funkcija, kas vektorā ievieto elementus no kopas. Tam nepieciešami trīs parametri.
Šeit:
- Pirmais parametrs attiecas uz avota iteratoru, kas norāda uz iteratora pirmo elementu. Šeit set ir avota iterators, kas norādīts, izmantojot funkciju begin ().
- Līdzīgi otrais parametrs norāda uz pēdējo elementu (funkcija end()).
- Trešais parametrs attiecas uz mērķa iteratoru, kas norāda uz pirmo elementu (norādīts, izmantojot funkciju begin()) iteratorā.
Izveidosim kopu ar pieciem studentiem un kopēsim visus elementus vektorā, izmantojot iepriekšējo funkciju.
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidojiet komplektu - skolēni ar 5 elementiem
komplekts < virkne > studenti = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' } ;
cout << 'Iestatīt: \n ' ;
priekš ( stīga i : studenti )
cout << i << endl ;
// Izveidot vektoru — student_vcof izmērs vienāds ar kopas lielumu
vektors < virkne > students_vc ( studenti. Izmērs ( ) ) ;
// Ievietot elementus no kopas — studenti vektorā — students_vc.
kopiju ( studenti. sākt ( ) , studenti. beigas ( ) , students_vc. sākt ( ) ) ;
cout << ' \n Vektors: \n ' ;
priekš ( stīga i : students_vc )
cout << i << endl ;
}
Izvade:
Tagad visi elementi, kas atrodas komplektā “Students”, tiek kopēti vektorā “students_vc”.
Noņemiet dublētos elementus
- Pirmkārt, mums ir jākārto elementi vektorā tā, lai visi dublētie elementi būtu blakus viens otram, izmantojot std::šķirot() funkciju. std :: kārtot ( Vektors pirmais, vektors pēdējais ) ;
- Izmantojiet funkciju std::unique(), lai tiktu atlasīti elementu dublikāti. Vienlaikus izmantojiet funkciju erase(), lai noņemtu dublikātus, ko atgriež funkcija std::unique(). Elementu secība var mainīties gala vektorā. vektors. dzēst ( std :: unikāla ( Vektors pirmais, vektors pēdējais ) , Vector pēdējais ) )
Izveidojiet 'studentu' vektoru ar 10 elementiem un atgrieziet vektoru, noņemot dublikātus.
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidojiet vektoru - skolēni ar 10 elementiem
vektors < virkne > studenti = { 'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' ,
'Sravan' , 'Bobby' , 'Madhu' , 'Meghana' , 'Lavanya' } ;
cout << 'Studenti: \n ' ;
priekš ( stīga i : studenti )
cout << i << ' ' ;
// Kārtot visus elementus studentu vektorā.
kārtot ( sākt ( studenti ) , beigas ( studenti ) ) ;
// Izmantojiet unikālo () funkciju, lai noņemtu dublikātus ar funkciju erase ().
studenti. dzēst ( unikāla ( sākt ( studenti ) , beigas ( studenti ) ) , beigas ( studenti ) ) ;
cout << ' \n \n Unikālie studenti: \n ' ;
priekš ( auto itr = cbegin ( studenti ) ; itr ! = daži ( studenti ) ; ++ itr ) {
cout << * itr << ' ' ;
}
}
Izvade:
Tagad visi elementi vektorā ir unikāli.
Pārvērtiet vektoru komplektā
Iestatījums neatļauj dublēt elementus. Ja rakstāt, lai ievietotu vektoru kopā ar dublikātiem, tie tiks ignorēti. Mēs izmantojam to pašu funkciju std::copy(), kas tika izmantota iepriekšējā scenārijā, kas pārveidoja kopu par vektoru.
Šajā scenārijā:
- Pirmais parametrs izmanto vektoru kā avota iteratoru, kas tiek norādīts, izmantojot funkciju begin ().
- Otrais parametrs izmanto vektoru kā avota iteratoru, kas tiek norādīts, izmantojot end() funkciju.
- Nododiet funkciju std::inserter(), ko izmanto, lai automātiski pārrakstītu/kopētu elementus noteiktā kopas vietā, kā parametrus nodrošinot kopu un iteratoru, kas norāda uz kopas beigām.
Izveidosim vektoru ar 10 veseliem skaitļiem un kopēsim elementus kopā.
#includeizmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot kopu - atzīmes ar 10 vērtībām
vektors < starpt > atzīmes = { 12 , 3. 4 , 56 , 78 , 65 , 78 , 90 , 90 , 78 , 3. 4 } ;
cout << 'Vektors: \n ' ;
priekš ( starpt i : atzīmes )
cout << i << ' ' ;
// Izveidot kopu — atzīmju_kopa, kuras izmērs ir vienāds ar vektora izmēru
komplekts < starpt > marks_set ;
// Ievietot elementus no kopas — studenti vektorā — students_vc.
kopiju ( sākt ( atzīmes ) , beigas ( atzīmes ) , ievietotājs ( marks_set,beigas ( marks_set ) ) ) ;
cout << ' \n \n Iestatījums: \n ' ;
priekš ( starpt i : marks_set )
cout << i << ' ' ;
}
Izvade:
Esošajam vektoram ar nosaukumu “atzīmes” ir 10 vērtības. Pēc tā kopēšanas komplektā “marks_set” tajā ir tikai seši elementi, jo pārējie četri elementi tiek dublēti.
Noņemiet tukšās virknes
Nav izmantotas tukšas virknes, kas atrodas vektorā. Laba prakse ir noņemt vektorā esošās tukšās virknes. Apskatīsim, kā no C++ vektora noņemt tukšās virknes:
- Atkārtojiet vektoru, izmantojot cilpu “for”.
- Katrā iterācijā pārbaudiet, vai elements ir tukšs (“”) vai neizmanto operatoru “==” ar at() dalībnieka funkciju.
- Izmantojot funkciju std::erase(), noņemiet tukšās virknes pēc iepriekšējā nosacījuma pārbaudes.
- Atkārtojiet 2. un 3. darbību līdz vektora beigām.
Izveidosim vektoru “uzņēmumi” ar 10 virknēm. No tiem pieci ir tukši, un mēs tos noņemam, ieviešot iepriekšējo pieeju.
#include#iekļaut
izmantojot nosaukumvieta std ;
galvenais ( ) {
vektors < virkne > kompānijas { 'Uzņēmums-A' , '' , 'Uzņēmums-B' ,
'' , 'Uzņēmums-C' , '' , 'Uzņēmums-D' , '' , '' , '' } ;
// Atkārtojiet uzņēmumus
// un noņemiet tukšos elementus, izmantojot erase ()
priekš ( starpt itr = 1 ; itr < kompānijas. Izmērs ( ) ; ++ itr ) {
ja ( kompānijas. plkst ( itr ) == '' ) {
kompānijas. dzēst ( kompānijas. sākt ( ) + itr ) ;
-- itr ;
}
}
// Parādīt vektoru
priekš ( auto & i : kompānijas ) {
cout << i << endl ;
}
}
Izvade:
Tagad vektorā “uzņēmumi” ir virknes, kas nav tukšas.
Teksta failā ierakstiet vektoru
Apspriedīsim, kā ierakstīt visus vektorā esošos elementus failā, izmantojot vektoru indeksus, izmantojot fstream .
- Pēc vektora inicializācijas ievietojiet tajā dažus elementus, izmantojot funkciju push_back.
- Izmantojiet funkciju open() no “fstream” bibliotēkas, kad režīms ir izslēgts.
- Pārvietojiet katru vektorā esošo elementu, izmantojot indeksus 'for' cilpā, un ierakstiet katru elementu nodrošinātajā failā.
- Visbeidzot aizveriet failu.
Ieviesīsim iepriekšējo pieeju, palaižot C++ kodu.
#iekļaut#include
#include
#include
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Izveidot vektoru — v_data
// un iespiediet tajā divus elementus.
vektors < virkne > v_data ;
v_data. atgrūst ( 'Laipni lūdzam' ) ;
v_data. atgrūst ( 'uz LinuxHint' ) ;
straume f ;
// Atveriet failu
f. atvērts ( 'written_file.txt' ,ios_base :: ārā ) ;
// Atkārtojiet katru vektora elementu un ierakstiet failā pa vienam.
priekš ( starpt i = 0 ; i < v_data. Izmērs ( ) ; i ++ )
{
f << v_data [ i ] << endl ;
}
// Aizveriet failu
f. aizveriet ( ) ;
}
Izvade:
Vektorā “v_data” ir divi elementi, un ceļā, kurā programma tiek izpildīta, tiek izveidots fails ar vektorā esošajiem elementiem.
Izveidojiet vektoru no teksta faila
Mēs uzzinājām, kā teksta failā ierakstīt elementus, kas atrodas vektorā. Šeit izveidosim vektoru no teksta failā esošā satura.
- Izveidojiet ' ifstream” mainīgais, ko izmanto, lai nolasītu informāciju no teksta faila, kurā mēs izveidojam vektoru no faila.
- Izveidojiet tukšu vektoru, lai saglabātu faila saturu, un izmantojiet tukšu virknes mainīgo kā karogu, lai pārbaudītu faila beigas.
- Izlasiet nākamo faila rindiņu, līdz tā sasniedz beigas (būtībā izmantojot cilpu “while”). Izmantojiet funkciju push_back(), lai nolasītu nākamo rindiņu un ievietotu to vektorā.
- Parādiet rindā esošo rindiņu atsevišķi, lai skatītu elementus, kas atrodas vektorā konsolē.
Ieviesīsim iepriekšējo pieeju, palaižot C++ kodu. Apskatīsim failu “data.txt” ar šādu saturu. Šeit vektora nosaukums ir “v_data”.
#include
izmantojot nosaukumvieta std ;
galvenais ( )
{
// Atveriet teksta failu - dati
ifstream fails ( 'data.txt' ) ;
// Izveidot vektoru — v_data tipa — virkne
vektors < virkne > v_data ;
siksna bija ;
// Lasiet nākamo rindiņu no faila data.txt
// līdz tas sasniedz beigas.
kamēr ( failu >> bija ) {
// Izlasiet nākamo rindiņu un ievadiet v_data
v_data. atgrūst ( bija ) ;
}
// Parādīt rindā esošo rindu atsevišķi.
kopiju ( v_data. sākt ( ) , v_data. beigas ( ) , ostream_iterator < virkne > ( cout , ' \n ' ) ) ;
}
Izvade:
Mēs redzam, ka “v_data” ir pieci elementi, kas iegūti no faila.
Secinājums
Šajā garajā rakstā mēs izpētījām visus iespējamos piemērus, kas tiek izmantoti reāllaika lietojumprogrammās, kas saistītas ar vektoriem C++ programmēšanas valodā. Katrs piemērs ir izskaidrots ar sintaksi, parametriem un piemērs ar izvadi. Katram kodam tiek pievienoti komentāri, lai iegūtu skaidru izpratni par kodu.