快速业务通道

泛型编程与设计新思维

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
, even<int>());

3、双参(Binary Function)形式

struct ltstr
  {
    bool operator()(const char* s1, const char* s2) const
    { return strcmp(s1<s2) < 0;}
  };
  // 使用函数对象ltstr,输出set容器中A和B的并集
  const int N=3
  const char* a[N] = {"xjz","xzh","gh"};
  const char* b[N]= {"jzx","zhx","abc"};
  set<const char*,ltstr> A(a,a+N);
  set<const char*,ltstr> B(b,b+N);
  set_union(A.begin(),A.end(),B.begin(),B.end(),
             ostream_iterator<const char*>(cout," "), ltstr());

容器(container)是一种对象(object),可以包含并管理其它的对象,并提供迭代器(iterators)用以定址其所包含之元素。根据迭代器种类的不同,容器也分为几中,以Input Iterator为迭代器的一般container,以Forward Iterator为迭代器的Forward Container,以Bidirectional Iterator 为迭代器的Reversible Container,以Random Access Iterator为迭代器的Random Access Container。STL定义二种大小可变的容器:序列式容器(Sequence Container)和关联式容器(Associative Container)序列式容器包括vector、list和deque,关联式容器包括set、map、multiset和multimap。以下示例简单说明部分容器的使用:

1、vector使用
  // 将A中以元素5为分割点,分别排序,使排序后5后面的元素都大于5之前的元素(后区间不排序),
  // 然后输出
int main()
  {
    int A[] = {7,2,6,4,5,8,9,3,1};
    const int N=sizeof(A)/sizeof(int);
    vector<int> V(A,A+N);
    partial_sort(V,V+5,V+N);
    copy(V,V+N,ostream_iterator<int>(cout," "));
    cout << endl;
  }
  输出可能是:1 2 3 4 5 8 9 7 6
2、list使用
  // 产生一空list,插入元素后排序,然后输出
  int main()
  {
    list<int> L1;
    L1.push_back(0);
    L1.push_front(1);
    L1.insert(++L1.begin,3);
    L1.sort();
    copy(L1.begin(),L1.end(),ostream_iterator<int>(cout," "));
  }
  输出:0 1 3
3、deque使用
  int main()
  {
    deque<int> Q;
    Q.push_back(3);
    Q.push_front(1);
    Q.insert(Q.begin()+1,2);
    Copy(Q.begin(),Q.end(),ostream_iterator<int>(cout," "));
  }
  输出:1 2 3
4、map使用
  int main()
  {
    map<string,int> M;
    M.insert(make_pair("A",11);
    pair<map<string,int>::iterator, bool> p = M.insert(make_pair("C",5));
    if(p.second)
      cout << p.first->second<<endl;
  }
  输出:5
5、multiset使用
  int main()
  {
    const int N = 5;
    int a[N] = {4,1,1,3,5};
    multiset<int> A(a,a+N);
    copy(A.begin(),A.end(),ostream_iterator<int>(cout," "));
  }
  输出:1 1 3 4 5

设计新思维

将设计模式(design patterns)、泛型编程(generic programming)和面向对象编程(object-oriented programming)有机的结合起来,便形成了设计新思维。其中,设计模式是经过提炼的出色设计方法,对于很多情况下碰到的问题,它都是合理而可复用的解决方案;泛型编程是一种典范(paradigm),专注于将类

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号