ვექტორი C++ -ში

განვიხილოთ C++ -ში ერთ-ერთი კონტეინერი ვექტორი, რომელსაც საკმაოდ ბევრი კარგი ფუნქცია აქვს და ოპერაციები მასზე საკმაოდ მარტივია. აქ განვიხილავთ რამდენიმე ფუნქციას, რომელიც შეიძლება ყველაზე ხშირად დაგჭირდეთ.

ვექტორი არის კონტეინერი, რომელიც შეიცავს შესაბამისი ტიპის ობიექტებს. ვექტორი შეიძლება იყოს სიმბოლოების, სტრიქონების, მთელი რიცხვების, ნამდვილი რიცხვების და ა.შ. ვექტორთან სამუშაოდ საჭიროა ჩართული გვქონდეს შესაბამისი ბიბლიოთეკა #include <vector> . ვექტორის ელემენტები გადანომრილია ინდექსებით. ვექტორის ელემენტებზე ხორციელდება სწრაფი წვდომა (Random access). რაც გულისხმობს, რომ ჩვენ შეგვიძლია რომელ ინდექსსაც გვინდა იმას მივწვდეთ. მაგალითად თუ გვაქვს v მთელი რიცხვების 10 ელემენტიანი ვექტორი და გვინდა მისი მე-5 ელემენტი უნდა დავწეროთ v[4] ( ინდექსი 4 იმიტომ არის რომ გადანომვრა ხდება 0-დან). ვექტორზე რამდენიმე მნიშვნელოვანი ფუნქციაა განსაზღვრული. ერთ-ერთი ასეთია size() ფუქნცია, რომელიც გვიბრუნებს ვექტორის ზომას(ელემენტების რაოდენობას). ასევე ალგორითმის ბიბლიოთეკაში არის ფუნქციები, რომლებიც ვექტორებთან მუშაობს. ესენია ვექტორის სორტირება( sort() ) , შებრუნება ( reverse() ), ელემენტ(ებ)ის წაშლა ( erase() ) . ასევე ვექტორზე განსაზღვრულია push.back() ფუნქციაც, რომელიც ვექტორს ბოლოში ამატებს ელემენტს. ახლა განვიხილოთ ერთ-ერთი პროგრამა.

კომენტარები აღნიშნავს თუ რას აკეთებს თითოეული ფუნქცია.
შენიშვნა : for ციკლში i=1 მაგივრად ყველგან უნდა ეწეროს i=0;

11 thoughts on “ვექტორი C++ -ში

  1. v.erase(v.begin() + 8);
    მერვე ელემენტს შლის თუ ინდექსით მერვეს?

      • #include
        #include
        using namespace std;
        int main()
        {
        vector vec;
        for(int i=0; i<10; i++)
        vec.push_back(i);
        vec.erase(vec.begin() + 8);
        for(int i=0; i<9; i++)
        cout<<vec[i]<<" ";
        system("pause");
        return 0;
        }
        ამ კოდზე დაყრდნობით წაიშალა ინდექსით მერვე;
        თუ მერვეს შლის v.erase(v.begin() + 8); კოდი გამოდის რომ
        v.erase(v.begin()); და v.erase(v.begin() + 1); ერთი და იგივეს შლის

      • // erase the 6th element
        myvector.erase (myvector.begin()+5);

        ეს c++ -ის ოფიციალურ საიტზე წერია.

  2. for(int i=0; i<v.size(); i++)
    v.size(); გამოთვლა ყოველ ჯერზე ხდება? თუ ფიქსირებულ მნიშვნელობას იყენებს?

    • არა . v.size() ერთხელ გამოითვლება და არის კონკრეტული რიცხვი. ყოველ იტერაციაზე მაგისი გამოთვლა არ ხდება

      • ანუ შენ ამბობ რომ, სიტყვაზე ასეთი კოდის შემთხვევაში
        for(int i=0; i<v.size(); i++)
        v.erase(v.begin() + i);
        ყოველ იტერაციაზე არ ახდენს ზომის გამოთლას?

      • სიმართლე გითხრა არ ვიცი ეგრე ზუსტად და ღრმად, მაგრამ აუცილებლად ვნახავ მაგის შესახებ ინფორმაციას.

      • Return size
        Returns the number of elements in the vector container.

        This is the number of actual objects held in the vector, which is not necessarily equal to its storage capacity. Vectors automatically reallocate their storage space when needed or when requested with member resize. To retrieve the current storage capacity of a vector you can call to its member capacity.

        ყოველ იტერაციაზე ზომას შეამცირებს ალბათ. მაგრამ თუ დროის შეფასებას დაიწყებ ოპერაციებში არ უნდა ჩაითვალოს size-ის ყოველ იტერაციაზე გამოთვლა

  3. დაწერეთ ფუნქცია, რომელიც დაადგენს: არის თუ არა მთელი N რიცხვი 3-ის ჯერადი. პროგრამაში შექმენით მთელ რიცხვთა ვეცტორი და ჩაწერეთ მასში 150 შემთხვევითი რიცხვი [12; 100] შუალედიდან. შემდეგ ცნობილი ალგორითმის (count_if) და თქვენი ფუნქციის გამოყენებით დაითვალეთ და დაბეჭდეთ ვეცტორში 3-ის ჯერადი რიცხვების რაოდენობა.

Leave a Reply / უპასუხე

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s