Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm list::insert() trong C++ STL


Bài viết trình bày chức năng của hàm list::insert() trong C++ STL.

List trong STL là gì?

List là container cho phép chèn và xóa ở bất kỳ vị trí nào trong thời gian không đổi. List được triển khai dưới dạng danh sách liên kết đôi. List cho phép cấp phát bộ nhớ không liên tục. List hiệu quả hơn array, vector, deque về chèn, xóa, di chuyển phần tử. Truy cập trực tiếp phần tử trong list chậm hơn.

insert() là gì?

Hàm list::insert() dùng để chèn phần tử vào list. Có 3 nạp chồng:

  • Chèn một phần tử tại vị trí iterator
  • Chèn n bản sao của một phần tử
  • Chèn một dãy phần tử từ iterator first đến last

Cú pháp

insert(iterator position, const value_type& val)
insert(iterator position, size_type n, const value_type& value)
insert(iterator position, iterator first, iterator last)

Tham số

  • val: phần tử mới cần chèn
  • position: vị trí chèn
  • n: số lượng phần tử chèn
  • first, last: iterator chỉ dãy phần tử chèn

Giá trị trả về

Trả về iterator trỏ đến phần tử đầu tiên được chèn mới.

Ví dụ 1

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> lst = {55, 84, 38, 66, 67};
    cout << "List: ";
    for(auto x = lst.begin(); x != lst.end(); ++x)
        cout << *x << " ";
    lst.insert(lst.begin(), 6);
    cout << "\nNew List: ";
    for(auto x = lst.begin(); x != lst.end(); ++x)
        cout << *x << " ";
    return 0;
}

Kết quả

List: 55 84 38 66 67
New List: 6 55 84 38 66 67

Ví dụ 2

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<char> lst = {'F', 'B', 'U', 'A', 'R', 'Y'};
    cout << "List: ";
    for(auto x = lst.begin(); x != lst.end(); ++x)
        cout << *x << " ";
    lst.insert(next(lst.begin()), 1, 'E');
    cout << "\nNew List: ";
    for(auto x = lst.begin(); x != lst.end(); ++x)
        cout << *x << " ";
    return 0;
}

Kết quả

List: F B U A R Y
New List: F E B U A R Y

Ví dụ 3

#include <iostream>
#include <list>
#include <vector>
using namespace std;

int main() {
    list<int> lst = {10, 44, 34, 98, 15};
    cout << "List: ";
    for(auto x = lst.begin(); x != lst.end(); ++x)
        cout << *x << " ";
    vector<int> v(2, 17);
    lst.insert(lst.begin(), v.begin(), v.end());
    cout << "\nNew List: ";
    for(auto x = lst.begin(); x != lst.end(); ++x)
        cout << *x << " ";
    return 0;
}

Kết quả

List: 10 44 34 98 15
New List: 17 17 10 44 34 98 15