list同样采用模板类实现,对象的默认构造形式:list
注意:尖括号内还可以设置指针类型或自定义类型
方式一:list(beg,end); //将[beg, end)区间中的元素拷贝给本身。
方式二:list(n,elem); //构造函数将n个elem拷贝给本身。
方式三:list(const list &lst); //拷贝构造函数。
list lstInt1;
lstInt1.push_back(1);
lstInt1.push_back(2);
lstInt1.push_back(3);
list lstInt2(lstInt1.begin(),lstInt1.end()); //1 2 3
list lstInt3(5,8); //8 8 8 8 8
list lstInt4(lstIntA); //1 2 3
list lstInt;
lstInt.push_back(1);
lstInt.push_back(2);
lstInt.push_back(3);
lstInt.push_back(4);
lstInt.push_back(5);
lstInt.pop_front();
lstInt.pop_front();
lstInt.push_front(11);
lstInt.push_front(12);
lstInt.pop_back();
lstInt.pop_back();
// lstInt {12, 11, 3}
list lstInt;
lstInt.push_back(1);
lstInt.push_back(2);
lstInt.push_back(3);
lstInt.push_back(4);
lstInt.push_back(5);
int iFront = lstInt.front(); //1
int iBack = lstInt.back(); //5
lstInt.front() = 11; //11
lstInt.back() = 19; //19
list lstInt;
lstInt.push_back(1);
lstInt.push_back(3);
lstInt.push_back(5);
lstInt.push_back(7);
lstInt.push_back(9);
for (list::iterator it=lstInt.begin(); it!=lstInt.end(); ++it)
{
cout << *it;
cout << " ";
}
for (list::reverse_iterator rit=lstInt.rbegin(); rit!=lstInt.rend(); ++rit)
{
cout << *rit;
cout << " ";
}
llist lstIntA,lstIntB,lstIntC,lstIntD;
lstIntA.push_back(1);
lstIntA.push_back(3);
lstIntA.push_back(5);
lstIntA.push_back(7);
lstIntA.push_back(9);
lstIntB.assign(lstIntA.begin(),lstIntA.end()); //1 3 5 7 9
lstIntB.assign(++lstIntA.begin(),--lstIntA.end()); //3 5 7
lstIntC.assign(5,8); //8 8 8 8 8
lstIntD = lstIntA; //1 3 5 7 9
lstIntC.swap(lstIntD); //互换
list lstIntA;
lstIntA.push_back(1);
lstIntA.push_back(2);
lstIntA.push_back(3);
if (!lstIntA.empty())
{
int iSize = lstIntA.size(); //3
lstIntA.resize(5); //1 2 3 0 0
lstIntA.resize(7,1); //1 2 3 0 0 1 1
lstIntA.resize(5); //1 2 3 0 0
}
list listA;
list listB;
listA.push_back(1);
listA.push_back(2);
listA.push_back(3);
listA.push_back(4);
listA.push_back(5);
listB.push_back(11);
listB.push_back(12);
listB.push_back(13);
listB.push_back(14);
listA.insert(listA.begin(), -1); //{-1, 1, 2, 3, 4, 5}
listA.insert( ++listA.begin(), 2, -2); //{-1, -2, -2, 1, 2, 3, 4, 5}
listA.insert(listA.begin() , listB.begin() , listB.end()); //{11, 12, 13, 14, -1, -2, -2, 1, 2, 3, 4, 5}
for(list::iterator it = listA.begin(); it!=listA.end(); it++){
cout<< *it<
// demo 15-32
#include
#include
#include
using namespace std;
int main(void){
//list 删除元素
list listA;
listA.push_back(1);
listA.push_back(2);
listA.push_back(3);
listA.push_back(4);
listA.push_back(5);
//erase 的用法
list::iterator itBegin=listA.begin();
++ itBegin;
list::iterator itEnd=listA.begin();
++ itEnd;
++ itEnd;
++ itEnd;
listA.erase(itBegin,itEnd);//此时容器lstInt包含按顺序的1, 4, 5三个元素。
listA.erase(listA.begin());//此时容器lstInt包含按顺序的4, 5三个元素。
listA.push_back(4); // 4, 5, 4
listA.insert(listA.end(), 5, 4); //4, 5, 4, 4, 4, 4, 4, 4
/*remove 删除元素*/
//方式一 直接调用remove 方法
//listA.remove(4);
//方式二 遍历然后逐个删除
for(list::iterator it=listA.begin(); it!=listA.end(); ){
if(*it == 4){
it =listA.erase(it); //相当于执行了++
}else {
it++;
}
}
for (list::iterator it=listA.begin(); it!=listA.end(); ++it)
{
cout << *it;
cout << " ";
}
system("pause");
return 0;
}
法后,list就包含5, 4, 3, 2, 1元素。
list listA;
listA.push_back(1);
listA.push_back(2);
listA.push_back(3);
listA.push_back(4);
listA.push_back(5);
listA.reverse(); //5, 4, 3, 2, 1