Vector – STL C++

Trong topic array STL C++, kích thước mảng phải là hằng số và khai báo ngay khi khai báo mảng. Việc khai báo mảng tĩnh gây lãng phí memory. STL cung cấp 1 template class là vector để giải quyết vấn đề này. Nguyên tắc hoạt động của vector giống như array, nhưng có thể cấp phát vùng nhớ trong khi run-time.

Cú pháp

vector<object_type> vector_name

object_type : tên kiểu dữ liệu (int, float, class,…)
vector_name: tên vector

Function

Function Giải thích
push_back(n)
  • Vector extend vùng nhớ
  • Add giá trị n vào cuối vector
insert(itr, n)
  • Chèn n vào trước vị trí được trỏ tới bởi iterator itr
pop_back( )
  • Remove phần tử cuối cùng trong vector
  • Giảm size đi 1
erase( itr)
  • Remove các phần tử được trỏ tới bởi iterator itr trong vector
  • Có thể overload function erase( itr) bằng cách truyền thêm iterator để chỉ giới hạn các phần cần xóa,  era(itr1, itr2)
resize(n,  val)
  •  Thay đổi kích thước vector thành vector có kích thước n phần tử
  • Nếu kích thước hiện tại lớn hơn n, remove các phần tử cuối vector để sao cho kích thước bằng n
  • Nếu kích thước hiện tại nhỏ hơn n, các phần tử mới được add vào cuối vector, val là giá trị của các phần tử thêm vào. Mặc định, các phần tử được add thêm có giá trị là 0.
 swap( )
  •  Swap 2 vector cho nhau.
 clear( )
  •  Remove tất cả các phần tử trong vector, nhưng không delete vector
 size( )
  •  Trả về kích thước của vector
 empty( )
  •  Trả về true, nếu vector rỗng
  • Trả về false, nếu vector có phần tử
capacity( )
  • Trả về kích thước của vector được khởi tạo ban đầu
at(i)
  • Trả về phần tử tại chỉ số i trong vector
front( )
  • Trả về phần tử đầu tiên của vector
back( )
  • Trả về phần tử cuối cùng của vector

 

Ví dụ 1: Minh họa hàm push_back()

#include <iostream>
#include <vector>
 
using namespace std;
 
void printvect(vector<int> v);
 
int main()
{
    std::vector<int>  v;
    std::vector<int>::iterator i;
 
    /* push_back() */
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(4);
    cout << "push_back(): ";
    printvect(v);
    cout << "size = " << v.size() << ", cap = " << v.capacity() << endl;

    /* insert(iterator, value) */
    i = v.begin();
    v.insert(i, 0);
    cout << "\ninsert(iterator, value): ";
    printvect(v); 
    cout << "size = " << v.size() << ", cap = " << v.capacity() << endl;
 
    /* insert(iterator, count, value)*/
    i = v.begin();
    v.insert(i, 2, 100);
    cout << "\ninsert(iterator, count, value): ";
    printvect(v);
    cout << "size = " << v.size() << ", cap = " << v.capacity() << endl;

    /* pop_back() */
    v.pop_back(); 
    cout << "\npop_back(): ";
    printvect(v);
    cout << "size = " << v.size() << ", cap = " << v.capacity() << endl;

    /* erase() */
    i = v.begin();
    v.erase(i);
    cout << "\nerase(): ";
    printvect(v);
    cout << "size = " << v.size() << ", cap = " << v.capacity() << endl;

    /* resize(n, val) */
    v.resize(8, 0);
    cout << "\nresize(n, val): ";
    printvect(v);
    cout << "size = " << v.size() << ", cap = " << v.capacity() << endl;

    /* swap() */
    std::vector<int>  v1;
    v1.swap(v);
    cout << "\nswap(): ";
    printvect(v1);
    if (v.empty())
    {
        cout << "vector v is empty" << endl;
        cout << "size = " << v.size() << ", cap = " << v.capacity() << endl;
    }
    else
    {
        cout << "v = ";
        printvect(v);
    }

    /* at(i) */
    cout << "at(i) = " << v1.at(4) << endl;

    /* front & back*/
    cout << "\nfront() = " << v1.front();
    cout << "\nback() = " << v1.back() << endl;

    /* clear() */
    v1.clear();
    cout << "\nclear(): ";
    if (v1.empty())
    {
        cout << "vector v is empty" << endl;
        cout << "size = " << v1.size() << ", cap = " << v1.capacity() << endl;
    }
    else
    {
        cout << "v = ";
        printvect(v1);
    }
    system("pause");
}
 
void printvect(vector<int> v)
{
    for(vector<int>::iterator i = v.begin(); i != v.end(); i++) 
    {
      cout << *i <<" ";   // for printing the vector
    }
    cout << endl;
}

Kết quả:

Vector - STL C++
Vector – STL C++

 

 

Be the first to comment

Leave a Reply