begin() end()

vector տիպի զանգված օգտագործելիս հնարավոր է գործողություններ անել vector-ի էլեմենտների հետ։ Օրինակ կարելի է սորտավորել, կամ շրջել զանգվածը algorithm գրադարանի sort() կամ reverse() ֆունկցիաների միջոցով։
Զանգվածները հնարավոր է դասավորել ըստ աճման կարգի գրելով sort(a, a + 100) բայց vector օգտագործելիս դա կարելի է անել ավելի ընդհանուր կերպ՝ sort(a.begin(), a.end());։ Այստեղ ծրագրի մեջ բացահայտ պետք չէ նշել զaնգվածի չափը։ Նշելով a.end() ծրագիրը հասկանում է, որ պետք է դասավորի ըստ աճման կարգի ամբողջ զանգվածը։
int a[100];
for (int i=0; i < 100; ++i)
	cin >> a[i];
sort(a, a + 100);
for (int i=0; i < 100; ++i)
	cout << a[i] << " ";
vector <int> a(100);
for (int i=0; i i < a.size(); ++i)
	cin >> a[i];
sort(a.begin(), a.end());
for (int i=0; i < a.size(); ++i)
	cout << a[i] << " ";
Ուշադրություն դարձրեք, որ երկրորդ ծրագրում a-ի չափը 100-ից 150 դարձնելուց հետո ծրագիրը ոչ-մի փոփոխության չի ենթարկվի։ Իսկ աջ կողմինը պետք է 3 տեղ փոփոխվի։
  • i < 100-ի փոխարեն օգտագործում ենք i < a.size():
  • sort(a, a + 100);-ի փոխարեն՝ sort(a.begin(), a.end());։
 
Նույն կերպ՝ զանգվածը հակառակ հերթականությամբ ստանալու համար կարելի է օգտագործել reverse ֆունկցիան algorithm գրադարանի մեջի։
sort(v.begin(), v.end());
reverse(v.begin(), v.end());

Ի՞նչ են .begin() և .end() ֆունկցիաները վերադարձնում

Այսքանից հետո բնական հարց կարող է առաջանալ, թե ի՞նչ արժեքներ են պարունակում .begin() և .end() ֆունկցիաներն իրենց մեջ: .begin()-ը իրականում զանգվածի առաջին էլեմենտի հասցեն է համակարգչի հիշողության մեջ (pointer)։ Հասցեների (pointers) մասին մենք շատ ավելի մանրամասն կծանոթանանք ավելի ուշ։ .end()-ը դա զանգվածի վերջին էլեմենտից հետո եկող հասցեն է։ Այսինքն այն հասցեն որտեղ vector-ը արդեն ավարտվում է։
vector <int> a{1, 2, 6, -1, 8, 10, 43, -32};
              [1, 2, 6, -1, 8, 10, 43, -32]
               ^                            ^
            .begin()                      .end()
 
Վարժություն՝
Տրված է n-ը, այնուհետև n երկարության զանգված։ Անհրաժեշտ է դասակարգել զանգվածը աճման կարգով բացառությամբ առաջին և վերջին տարրերի (2 ≤ n ≤
Մուտք
Ելք
4 1 6 7 3
1 6 7 3
4 1 7 6 3
1 6 7 3
 
 

Constraints

Time limit: 0.4 seconds

Memory limit: 512 MB

Output limit: 5 MB

To check your solution you need to sign in
Sign in to continue