List容器(三)
开发工具与关键技术:Visual Studio、C++
作者:张国军
撰写时间:2019年08月16日
list 与迭代器
#include <iostream>
#include <list>
using namespace std;
void main()
{
//list.begin(); //返回容器中第一个元素的迭代器。
//list.end(); //返回容器中最后一个元素之后的迭代器。
//list.rbegin(); //返回容器中倒数第一个元素的迭代器。
//list.rend(); //返回容器中倒数最后一个元素的后面的迭代器。
list<int> lstInt;
lstInt.push_back(1);
lstInt.push_back(3);
lstInt.push_back(5);
lstInt.push_back(7);
lstInt.push_back(9);
for (list<int>::iterator it = lstInt.begin(); it != lstInt.end(); ++it)
{
cout << *it;
cout << " ";
}
cout << endl;
for (list<int>::reverse_iterator rit = lstInt.rbegin(); rit != lstInt.rend();
++rit)
{
cout << *rit;
cout << " ";
}
}
void main()
{
//list.insert(pos, elem); //在 pos 位置插入一个 elem 元素的拷贝,返回新数据的位置。
//list.insert(pos, n, elem); //在 pos 位置插入 n 个 elem 数据,无返回值。
//list.insert(pos, beg, end); //在 pos 位置插入[beg,end)区间的数据,无返回值。
//注意:
//在 3 号位置插入元素, 原来的 3 号位置变成 4 号位置 原来的 4 号位置变成 5 号位置
//list 不能随机访问
//it++; //list 只能逐个的进行访问
// it = it + 3; // 不支持随机的访问容器
list<int> lstA;
list<int> lstB;
lstA.push_back(1);
lstA.push_back(3);
lstA.push_back(5);
lstA.push_back(7);
lstA.push_back(9);
lstB.push_back(2);
lstB.push_back(4);
lstB.push_back(6);
lstB.push_back(8);
cout << "-----------lstA---------" << endl;
stackshow(lstA);
cout << "-----------lstB---------" << endl;
stackshow(lstB);
lstA.insert(lstA.begin(), 11); //{11, 1, 3, 5, 7, 9}
cout << "-------lstA.insert(lstA.begin(), 11);---------" << endl;
stackshow(lstA);
lstA.insert(++lstA.begin(), 2, 33); //{11,33,33,1,3,5,7,9}
cout << "----------lstA.insert(++lstA.begin(), 2, 33);----------" << endl;
stackshow(lstA);
lstA.insert(lstA.begin(), lstB.begin(), lstB.end());
cout << "-------lstA.insert(lstA.begin(), lstB.begin(), lstB.end());----------" << endl;
stackshow(lstA);
//{2,4,6,8,11,33,33,1,3,5,7,9}
}
list 的删除
void main()
{
//list.clear(); //移除容器的所有数据
//list.erase(beg, end); //删除[beg,end)区间的数据,返回下一个数据的位置。
//list.erase(pos); //删除 pos 位置的数据,返回下一个数据的位置。
//lst.remove(elem); //删除容器中所有与 elem 值匹配的元素。
//删除区间内的元素
//lstInt 是用 list<int>声明的容器,现已包含按顺序的 1, 3, 5, 6, 9 元素。
list<int> lstInt;
lstInt.push_back(1);
lstInt.push_back(3);
lstInt.push_back(2);
lstInt.push_back(6);
lstInt.push_back(9);
stackshow(lstInt);
list<int>::iterator itBegin = lstInt.begin();
++itBegin;
list<int>::iterator itEnd = lstInt.begin();
++itEnd;
++itEnd;
++itEnd;
lstInt.erase(itBegin, itEnd);
cout << "----lstInt.erase(itBegin, itEnd);-----" << endl;
stackshow(lstInt);
}
//删除容器中等于 3 的元素
lstInt.remove(3);
//删除 lstInt 的所有元素
lstInt.clear(); //容器为空