代码改变世界

知识链.....让我能学到好多东西

2010-08-12 16:16  Aga.J  阅读(284)  评论(0编辑  收藏  举报

   今天看《编程珠玑》的珍珠字符串,书里使用了C++ STL的set模板就很清晰,且很简单的完成了一项功能---对输入的字串组进行不重复的保存,并且有序输出,于是我就傻傻的在vc上跟着书里的代码敲了下面的代码

       set<string> s;

     set<string>::iterator iterator;

     string t;

     while(cin >> t)

     {

         if(t=="ok") break;

         s.insert(t);

     }

     for(iterator=s.begin();iterator!=s.end();iterator++)

     {

         cout<<*iterator<<" ";

     }

     cin>>t;

运行后看到set容器帮我完成得很好,不禁想了解了解set容易,所有去了C++ Referencehttp://www.cplusplus.com/reference/stl/set/看了一下set容器的介绍,得到下面的知识:

//根据C++ Reference

//set是一种关联性的容器,存储唯一的元素(要保存可重复的元素,则使用multiset)并且把这些元素作为key

//所谓的关联容器是一种可以通过key来访问对应元素的容器,而顺序容器,则通过元素间的相对或者绝对位置来找到元素

//stl中set是由二叉搜索树实现的!

//map也是一种关联性容器,它也通过key来访问元素,但是不是使用元素来作为key,而是使用其他key来映射到value

//元素的组织遵循strict weak order

看到最后一点strict weak order,貌似在《离散数学》里面学过,就维基百科了一下strict weak order,http://en.wikipedia.org/wiki/Strict_weak_ordering 看了里面的介绍后,更加发现我《离散数学》根本就没学好。。。。悲剧。。

//根据维基百科的解释

//strict weak order是一种在一个strict partial order的集合S上的元关系“<”,strict partial order是指不自反,不对称,可传递的关系

//strict weak order包括下面属性,假设x,y在集合s里

//1 对于任意x,不存在x<x

//2 对于任意x!=y,如果x<y,那么不存在x>y

//3 对于任意x,y,z,如果x<y且y<z,那么x<z

//4 对于任意x,y,z,如果x和y不可比较,且y和z不可比较,那么x和z不可比较。

//在维基百科里还提到了总序,这也是《离散数学》里所学的,然后就又可以再维基百科一下总序了

然后就。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。。。一个知识就能牵出一大堆知识。。。。。。。。。。。