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