⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tlist.cc

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 CC
字号:
// test/demo of generic lists#include <assert.h>#define tassert(ex) {if ((ex)) cerr << #ex << "\n"; \                       else _assert(#ex, __FILE__,__LINE__); }#include <iostream.h>#include <list.h>#include <algo.h>bool int_compare(int a, int b){  return a < b;}int inc(int x){  return x + 1;}void print(list<int>& l){  for (list<int>::iterator it = l.begin(); it != l.end(); it++)    cout << *it << " ";  cout << "\n";}int is_odd(int x){  return x & 1;}int is_even(int x){  return (x & 1) == 0;}void sequence(list<int>& a, int lo, int hi){  back_insert_iterator<list<int> > it(a);  while (lo <= hi)    *it++ = lo++;}int old_rand = 9999;int get_rand(){    old_rand = ((long)old_rand * (long)1243) % (long)971;    return old_rand;}void randseq(list<int>& a, int n){  back_insert_iterator<list<int> > it(a);  while (--n >= 0)    *it++ = get_rand() % 50;}int array1 [] = { 9, 16, 36 };int array2 [] = { 1, 4 };int test_splice (){  list<int> l1 (array1, array1 + 3);  list<int> l2 (array2, array2 + 2);  list<int>::iterator i1 = l1.begin ();  l1.splice (i1, l2);  list<int>::iterator i2 = l1.begin ();  while (i2 != l1.end ())    cout << *i2++ << endl;  return 0;}main(){  list<int> a;  int i;  list<int>::iterator it, bit;  sequence(a, 1, 20);  cout << "\nlist<int> a = sequence(1, 20);\n"; print(a);  for (it = a.begin (), i = 0; it != a.end (); it++, i++)    assert (*it == i + 1);  list<int> b;  randseq(b, 20);  cout << "\nlist<int> b = randseq(20);\n"; print(b);  list<int> c;  c.insert (c.end(), a.begin(), a.end());  c.insert (c.end(), b.begin(), b.end());  cout << "\nlist<int> c = a and b;\n"; print(c);  list<int> d;  for (it = a.begin(); it != a.end(); it++)    d.insert(d.end (), inc(*it));  cout << "\nlist<int> d = map(inc, a);\n"; print(d);  list<int> e;  back_insert_iterator<list<int> > e_insertor (e);  reverse_copy (a.begin(), a.end (), e_insertor);  cout << "\nlist<int> e = reverse(a);\n"; print(e);  list<int> f;  for (it = a.begin(); it != a.end(); it++)    if (is_odd (*it))      f.insert(f.end (), *it);  cout << "\nlist<int> f = select(is_odd, a);\n"; print(f);  list<int> ff;  for (it = f.begin(); it != f.end(); it++)    if (is_even (*it))      ff.insert(ff.end (), *it);  assert(ff.empty());  int red = 0;  for (it = a.begin(); it != a.end(); it++)    red += *it;  cout << "\nint  red = a.reduce(plus, 0);\n"; cout << red;  it = a.begin(); ++it; ++it;  int second = *it;  cout << "\nint second = a[2];\n"; cout << second;  list<int> g;  for (it = a.begin(), bit = b.begin(); it != a.end () && bit != b.end (); )    g.insert (g.end (), *it++ + *bit++);  cout << "\nlist<int> g = combine(plus, a, b);\n"; print(g);  g.remove_if (is_odd);  cout << "\ng.del(is_odd);\n"; print(g);  ff.erase (ff.begin (), ff.end());  for (it = g.begin(); it != g.end(); it++)    if (is_odd (*it))      ff.insert (ff.end (), *it);  assert(ff.empty());  b.sort();  for (it = b.begin(); bit = it++, it != b.end (); ) assert (*it >= *bit);  cout << "\nb.sort(int_compare);\n"; print(b);  list<int> h;  back_insert_iterator<list<int> > h_insertor (h);  merge (a.begin (), a.end (), b.begin (), b.end (), h_insertor, int_compare);  cout << "\nlist<int> h = merge(a, b, int_compare);\n"; print(h);  for (it = h.begin(); bit = it++, it != h.end (); ) assert (*it >= *bit);  cout << "\nh via iterator:\n";  for (it = h.begin(); it != h.end (); it++)    cout << *it << ", ";  cout << "\n";  test_splice ();  cout << "\ndone\n";}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -