#include <vector>
#include <iostream>
#include <algorithm>
#include <functional>
#include<list>
#include<ctime>
using namespace std;
struct Node
{
int a;
char c;
//头增加
Node(int d, int e)
{
a = d;
c = e;
}
};
void fun(Node& d)
{
cout << d.a << " " << d.c << endl;
}
void ListCoutAdd()
{
//输出
/*Node no = { 12, 'a' };
list<Node> db1(6, no);*/
//迭代器循环输出。
/*for (list<Node>::iterator ite = db1.begin(); ite != db1.end(); ite++)
{
cout << ite->a << " " << ite->c << endl;
}*/
//输出
//cout << db1.back().a << " " << db1.back().c << endl;//back()函数返回一个引用,指向list最后一个元素。
//cout << db1.front().a << " " << db1.front().c << endl; //back()函数返回一个引用,指向list第一个元素。
//头增加
/*list <Node> db;
db.push_front(Node(12, 'b'));
for_each(db.begin(), db.end(), fun);
db.push_front(Node(13, 'c'));
for_each(db.begin(), db.end(), fun);*/
//尾添加
/*list <Node> db2;
db2.push_front(Node(12, 'b'));
db2.push_back(Node(13, 'c'));
for_each(db2.begin(), db2.end(), fun);*/
//中间添加
list <Node> db2;
list <Node> db3;
db3.push_front(Node(16, 'b'));
db3.push_front(Node(16, 'b'));
db3.push_front(Node(16, 'b'));
db3.push_back(Node(16, 'b'));
db2.push_front(Node(12, 'b'));
db2.push_back(Node(13, 'c'));
list<Node>::iterator ite = db2.begin(); //迭代器
ite++;//将下标移位到第二位。(数据第二位,下标为1)
//db2.insert(ite, Node(15, 'd'));//插入一个元素。
//db2.insert(ite,3,Node(16, 'e'));//插入3(多)个元素。
db2.insert(ite,++db3.begin(),db3.end());//在db2中下标位置为1(数据第二位,下标为1)处插入db3中下标为[1,3)的元素。
for_each(db2.begin(), db2.end(), fun);
}
int main()
{
ListCoutAdd();
system("pause");
return 0;
}