list

25.list使用一个双向链表来管理元素。

26.list不支持随机存取。如果要存取第5个元素,就得遍历前4个元素。所以,在list中随机遍历任意元素,是很缓慢的行为。

27.由于不支持随机存取,list既不提供下标运算符,也不提供at()。

28.list并未提供容量、空间重新分配等操作函数,因为全无必要。每个元素都有自己的内存,在被删除之前一直有效。

29. list常用到的函数:







25.splice函数在一个链表中插入另一个链表的元素。



39.stack中的函数:(默认是由deque存的)

                empty() 堆栈为空则返回真

                pop() 移除栈顶元素

                push() 在栈顶增加元素

                size() 返回栈中元素数目

                top() 返回栈顶元素

39.代码如下:

        #include "Utility.h"

 

void main()

{

//---------默认deque实现的stack--------

stack<int> iStack_deque;

iStack_deque.push(1);

iStack_deque.push(4);

iStack_deque.push(2);

iStack_deque.push(8);

iStack_deque.push(5);

cout << "iStack_deque中元素个数为:" << iStack_deque.size() << endl;

int iSum = 0;

//输出stack中的元素

while (!iStack_deque.empty())

{

cout << iStack_deque.top() << ",";

iSum += iStack_deque.top();

iStack_deque.pop();

}

cout << endl;

cout << "iStack_deque中数据之和为:" << iSum << endl;

cout << "iStack_deque中元素个数为:" << iStack_deque.size() << endl;

 

//---------默认vector实现的stack--------

stack<int, vector<int>> iStack_vector;

iStack_vector.push(11);

iStack_vector.push(14);

iStack_vector.push(12);

iStack_vector.push(18);

iStack_vector.push(15);

//遍历

while (!iStack_vector.empty())

{

cout << iStack_vector.top() << ",";

iStack_vector.pop();

}

cout << endl;

 

//---------默认list实现的stack--------

stack<int, list<int>> iStack_list;

iStack_list.push(311);

iStack_list.push(314);

iStack_list.push(312);

iStack_list.push(318);

iStack_list.push(315);

//遍历

while (!iStack_list.empty())

{

cout << iStack_list.top() << ",";

iStack_list.pop();

}

cout << endl;

 

 

//-------stack的构造函数用法-------

deque<int> myDeque(2, 100);

vector<int> myVector(3, 200);

 

stack<int> first;

stack<int> second(myDeque);

stack<int, vector<int> > third;

stack<int, vector<int> > fourth(myVector);

cout << "size of first: " << (int)first.size() << endl;

cout << "size of second: " << (int)second.size() << endl;

cout << "size of third: " << (int)third.size() << endl;

cout << "size of fourth: " << (int)fourth.size() << endl;

 

system("pause");

}

39.list容器代码如下:

  #include "Utility.h"

 

template<typename T>

void printContainer(T _container)

{

for (T::const_iterator iter = _container.cbegin();

iter != _container.cend();

++iter)

{

cout << (*iter) << ",";

}

cout << endl;

}

template<typename T>

void printContainer_reverse(T _container)

{

for (T::reverse_iterator riter = _container.rbegin();

riter != _container.rend();

++riter)

{

cout << (*riter) << ",";

}

cout << endl;

}

 

bool Mod2(int _value)

{

if (_value % 2 == 0)

return true;

return false;

}

 

template<typename T>

class is_odd : public unary_function < T, bool >

{

public:

bool operator( ) (T& value)

{

return (value % 2) == 1;

}

};

 

bool greater(int _value1, int _value2)

{

if (_value1 >= _value2)

return true;

return false;

}

 

void main()

{

//--------list容器----------

//基本函数请自行使用

 

int iArray[10] = { 1, 3, 2, 4, 8, 9, 5, 6, 10, 7 };

list<int> iList1(iArray, &iArray[5]);

if (!iList1.empty())

{

cout << "iList1第一个元素为:" << iList1.front() << endl;

cout << "iList1最后一个元素为:" << iList1.back() << endl;

}

printContainer(iList1);

printContainer_reverse(iList1);

 

iList1.push_back(12);

iList1.push_front(23);

printContainer(iList1);

 

list<int>::iterator iter = iList1.begin();

++iter;

++iter;

 

iList1.erase(iter);

printContainer(iList1);

 

//---------list容器独有的函数成员splice()----------

cout << "------list容器独有的函数成员splice()-------" << endl;

int iArray2[10] = { 1, 3, 6, 2, 3, 7, 9, 4, 8, 0 };

 

list<int> iList2(iArray2, &iArray2[5]);

list<int> iList3(&iArray2[5], &iArray2[10]);

 

list<int>::iterator pos = iList2.end();//13623

//++pos;

//++pos;

//++pos;

list<int>::iterator first = iList3.begin();//79480

++first;

++first;

list<int>::iterator last = first+1;

//++last;

//++last;

//++last;

//++last;

iList2.splice(iList2.end(), iList3, first, last);

printContainer(iList2);

printContainer(iList3);

 

//---------list容器独有的函数成员remove(value)----------

//移除值为value的所有元素

cout << "---------list容器独有的函数成员remove(value)----------" << endl;

iList2.remove(3);

printContainer(iList2);

 

//---------list容器独有的函数成员remove_if()----------

//移除满足条件的所有元素

cout << "---------list容器独有的函数成员remove_if()----------" << endl;

//iList2.remove_if(Mod2);//移除偶数

iList2.remove_if( is_odd<int>() ); //移除奇数

printContainer(iList2);

//---------list容器独有的函数成员unique()----------

//移除相邻且重复的元素,只留下1个

cout << "---------list容器独有的函数成员unique()----------" << endl;

list<int> iList4;

iList4.push_back(11);

iList4.push_back(22);

iList4.push_back(22);

iList4.push_back(33);

iList4.push_back(33);

iList4.unique();

printContainer(iList4);

//---------list容器独有的函数成员sort()----------

//升序排序

cout << "---------list容器独有的函数成员sort()----------" << endl;

int iArray3[10] = { 87,6458,63,4,9,391,3,14,9,475 };

list<int> iList5(&iArray3[0],&iArray3[10]);

iList5.sort();

printContainer(iList5);

//---------反序函数---------

cout << "---------反序函数---------" << endl;

iList5.reverse();

printContainer(iList5);

system("pause");

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值