list的用法

0. display函数

使用 泛型,定义打印函数。

 template <typename Container>
 void display(Container& con) {
     for (auto& elem : con) {
         cout << elem << " ";
     }
     cout << endl;
 }

1. 初始化

list<int> number = {1,2,3,4,5}; // { } 初始化
list<int> number2(10,5); // 10是count, 5是数值,声明10个5。
list<int> number3(number); //以number为源,初始化number3。
list<int> number4(number2.begin(), number2.end()); // 以两个迭代器位置创建。

2. splice 用法

将一list的部分或全部移动到另一list中。

// 将 number2 中内容 移到 number的 it 位置。
list<int> number = {1, 3, 9, 4};
list<int> number2 = {11, 33, 55};
cout << endl << "splice number2 to number." << endl;
list<int>::iterator it = number.begin();
++it;
number.splice(it, number2);
//将number3 中it3的内容移到 number的 it 位置。
 cout << endl << "splice from number3 it3 iterator index to number it." << endl;
 list<int> number3 = {100, 200, 300};
 list<int>::iterator it3 = number3.begin();
 it3++;
 it = number.begin();
 it++;
 number.splice(it, number3, it3);
 display(number);
 display(number3);
//将number3 中it2 到 it3的内容移到 number的 it 位置。
 cout << endl << "splice number3 fron it2 to it3 , to number it" << endl;
 auto it2 = number3.begin();
 it3 = number3.end();
 it3--;
 it = number.begin();
 it++;
 number.splice(it, number3, it2, it3);
 display(number);
 display(number3);
// splice number 自身, 容易出bug, 范围问题。
 cout << endl << "splice number self" << endl;
 auto it4 = number.begin();
 ++it4;
 ++it4;
 cout << "*it4 = " << *it4 << endl;

 auto it5 = number.begin();
 it5++;
 it5++;
 it5++;
 cout << "*it5 = " << *it5 << endl;
 number.splice(it4, number, it5);
 // number.splice(it4, number, it4, it5); // bug
 display(number);
posted @ 2023-07-21 08:51  zxinlog  阅读(15)  评论(0)    收藏  举报