list的使用于string的使用都类似,首先通过查阅来看list有哪些函数:
可以看到函数还是蛮多的,我们值重点一些常用的和常见的:
1.关于push_back,push_front,和对应迭代器的使用
//关于push_back和push_front
void test_list1()
{
list<int> lt;
lt.push_back(1);
lt.push_back(2);
lt.push_back(3);
lt.push_back(4);
lt.push_back(5);
lt.push_front(10);
lt.push_front(20);
//范围for
for (auto e : lt)
{
cout << e << " ";
}
cout << endl;
}
2.关于insert:
void test_list2()
{
list<int> lt;
lt.push_back(1);
lt.push_back(2);
lt.push_back(3);
lt.push_back(4);
lt.push_back(5);
lt.push_front(10);
lt.push_front(20);
//insert:
//第五个位置插入数据:(对应迭代器中无加法迭代,无法直接找到,需要遍历)
//错误写法:
//lt.insert(lt.begin()+5, 10);
//正确:
auto it = lt.begin();
/*for (size_t i = 0; i < 5; i++)
{
++it;
}
lt.insert(it, 10);*/
//具体找到某个数并在其之前插入
it = find(lt.begin(), lt.end(), 3);
if (it != lt.end())
{
lt.insert(it, 30);
// insert以后,it不失效
*it *= 100;
}
}
对应的insert的使用需要注意的是其不想string一样可以使用迭代器重载的“+”号,因为list是由指针
指向的所以“+”号重载起来只会影响效率,所以我们要使用insert或者erase的时候需要先找到要插
入的地方或者删除的元素才可以顺利插入。
3.关于erase:
void test_list2()
{
list<int> lt;
lt.push_back(1);
lt.push_back(2);
lt.push_back(3);
lt.push_back(4);
lt.push_back(5);
lt.push_front(10);
lt.push_front(20);
//erase:
//同理找到某个具体的数在删除:
it = find(lt.begin(), lt.end(), 2);
if (it != lt.end())
{
lt.erase(it);
}
//删除所有偶数
it = lt.begin();
while (it != lt.end())
{
if (*it % 2 == 0)
{
it = lt.erase(it);
}
else
{
++it;
}
}
}
要注意的与insert相同。
4.关于reverse和sort
//reverse,sort
void test_list3()
{
list<int> lt;
lt.push_back(1);
lt.push_back(2);
lt.push_back(3);
lt.push_back(4);
lt.push_back(5);
lt.push_front(10);
lt.push_front(20);
for (auto e : lt)
{
cout << e << " ";
}
cout << endl;
reverse(lt.begin(), lt.end());
for (auto e : lt)
{
cout << e << " ";
}
cout << endl;
lt.reverse();
for (auto e : lt)
{
cout << e << " ";
}
cout << endl;
lt.sort();
for (auto e : lt)
{
cout << e << " ";
}
cout << endl;
}
这些就是对应的需要掌握的并且基础的