vector 插入的时候就排序

来源:互联网 发布:打印机,输入端口名称 编辑:程序博客网 时间:2024/05/19 14:55

http://blog.csdn.net/hzqhbc/article/details/7497646

升序排列的容器:
iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。
iterator upper_bound( const key_type &key ):返回一个迭代器,指向键值>key的第一个元素。
★降序排列的容器:
iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值<= key的第一个元素。
iterator upper_bound( const key_type &key ):返回一个迭代器,指向键值<key的第一个元素。
不论lower_bound 还是 upper_bound 都是把元素从左到右排列(不能升序还是降序),取 key 或者 key右边 的第一个元素的迭代器(假设key也在这序列里面)
插入的时候只要选择好插入的位置就排序了

  1. #include <vector>  
  2. #include <algorithm>  
  3. class CEntity  
  4. {  
  5. public:  
  6.     CEntity( int nValue=0 ):m_nValue(nValue)  
  7.     {  
  8.   
  9.     }  
  10.     int m_nValue;  
  11. };  
  12.   
  13. class CLess  
  14. {  
  15. public:  
  16.     bool operator()( const CEntity& lh, const CEntity& rh )  
  17.     {  
  18.         //这里还可以进行一些自定义的判断方式  
  19.   
  20.         return lh.m_nValue < rh.m_nValue;  
  21.     }  
  22. };  
  23. int _tmain(int argc, _TCHAR* argv[])  
  24. {  
  25.         std::vector<CEntity> vEntity1;  // 插入排序
  26.     std::vector<CEntity> vEntity2;  // 乱序
  27.     for ( int n=0; n<10; n++ )  
  28.     {  
  29.         nValue = rand()%10;  
  30.         vEntity1.insert(std::upper_bound(vEntity1.begin(),vEntity1.end(),CEntity(nValue),CLess()), CEntity(nValue) );  
  31.         vEntity2.push_back( CEntity(nValue) );  
  32.     }  
  33. }

0 0
原创粉丝点击