`

lexicographical_compare

阅读更多

lexicographical_compare:

  C++ STL 泛型算法函数:用于按字典序比较两个序列。

  函数申明:

  //重载1,如果[first1, last1)按字典序列小于[first2, last2),返回true,否则返回false。

  template <class InputIterator1, class InputIterator2 >

  bool

  lexicographical_compare(

  InputIterator1 first1, InputIterator1 last1,

  InputIterator2 first2, InputIterator2 last2 );

  //重载2,功能同重载1,增加了比较函数comp,即大小关系由comp函数确定。

  template < class InputIterator1, class InputIterator2,

  class Compare >

  bool

  lexicographical_compare(

  InputIterator1 first1, InputIterator1 last1,

  InputIterator2 first2, InputIterator2 last2,

  Compare comp );

  示例代码:

  #include <algorithm>

  #include <iostream>

  #include <iterator>

  using namespace std;

  void Output(const int * a,const int & a_size,const int * b,const int & b_size)

  {

  cout<<"a[]=";

  copy(a,a+a_size,ostream_iterator<int>(cout," "));

  cout<<endl;

  cout<<"b[]=";

  copy(b,b+b_size,ostream_iterator<int>(cout," "));

  cout<<endl;

  }

  typedef bool (* CMP)(const int &,const int &);

  int Compare(const int * a,const int & a_size,const int * b,const int & b_size,CMP cmp) //按照cmp方式进行比较

  {

  bool ASmallerThanB,BSmallerThanA;

  ASmallerThanB=lexicographical_compare(a,a+a_size,b,b+b_size,cmp); //按照cmp方式进行比较

  BSmallerThanA=lexicographical_compare(b,b+b_size,a,a+a_size,cmp);

  if(! ASmallerThanB && ! BSmallerThanA) //a[] 和 b[] 相等

  return 0;

  else if(ASmallerThanB) //a[] < b[]

  return -1;

  else

  return 1;

  }

  int Compare(const int * a,const int & a_size,const int * b,const int & b_size) //默认比较方式

  {

  bool ASmallerThanB,BSmallerThanA;

  ASmallerThanB=lexicographical_compare(a,a+a_size,b,b+b_size); //默认比较方式

  BSmallerThanA=lexicographical_compare(b,b+b_size,a,a+a_size);

  if(! ASmallerThanB && ! BSmallerThanA) //a[] 和 b[] 相等

  return 0;

  else if(ASmallerThanB) //a[] < b[]

  return -1;

  else

  return 1;

  }

  bool greater(const int & a,const int & b) //自定义越大的字典序越小

  {

  return a>b;

  }

  int main()

  {

  int a[]={1,2,3,4,5,6};

  int b[]={1,2,3,4,5,6};

  Output(a,6,b,6);

  cout<<"Compare(a,6,b,6)="<<Compare(a,6,b,6)<<endl;

  cout<<"Compare(a,6,b,6,greater)="<<Compare(a,6,b,6,greater)<<endl;

  rotate(a+2,a+4,a+6);

  Output(a,6,b,6);

  cout<<"Compare(a,6,b,6)="<<Compare(a,6,b,6)<<endl;

  cout<<"Compare(a,6,b,6,greater)="<<Compare(a,6,b,6,greater)<<endl;

  return 0;

  }

  return a>b;

  }

  int main()

  {

  int a[]={1,2,3,4,5,6};

  int b[]={1,2,3,4,5,6};

  Output(a,6,b,6);

  cout<<"Compare(a,6,b,6)="<<Compare(a,6,b,6)<<endl;

  cout<<"Compare(a,6,b,6,greater)="<<Compare(a,6,b,6,greater)<<endl;

  rotate(a+2,a+4,a+6);

  Output(a,6,b,6);

  cout<<"Compare(a,6,b,6)="<<Compare(a,6,b,6)<<endl;

  cout<<"Compare(a,6,b,6,greater)="<<Compare(a,6,b,6,greater)<<endl;

  return 0;

  }

分享到:
评论

相关推荐

    C++与操作系统等面试题96

    bool lexicographical_compare (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); ``` - **功能**:比较[first1, last1)区间内元素与[first2, last2)区间内元素的字典...

    C++参考pdf(用了才知pdf不适用,不要下)

    ### C++ Algorithms 知识点概述 根据提供的信息来看,主要关注的是cppreference网站上的C++算法部分。这里将详细解读这些算法的功能及其在实际编程中的应用。 #### 1....- **功能**: `accumulate` 函数用于计算一系列...

    C++STL——各种非变异算法的技术总结和用法代码示例

    bool isLess = std::lexicographical_compare(vec1.begin(), vec1.end(), vec2.begin(), vec2.end()); std::cout (isLess ? "Yes" : "No") ; return 0; } ``` 5. **`find_if`算法**:寻找满足特定条件的第一个...

    ntl:用于 Windows NT 内核模式驱动程序的 STL 的非常微小和选择性的实现

    lexicographical_compare ;班级助手类integral_constant ; bool_constant ; true_type ; false_type ;主要类型类别is_class (因为is_union没有实现,它不检测联合); is_pointer ; is_lvalue_reference ( _v );...

    Effictive STL CHM中文版

    条款35: 通过mismatch或lexicographical_compare实现简单的忽略大小写字符串比较 条款36: 用not1和remove_copy_if来表现copy_if 条款37: 用accumulate或for_each来统计序列 仿函数,仿函数类,函数等等 条款38: ...

    字典序算法

    字典序比较可以通过重载`运算符来实现,或者直接使用`std::lexicographical_compare`函数,这是一个标准库函数,用于比较两个字符串的字典顺序。 以下是字典序比较的基本步骤: 1. 初始化两个待比较的字符串。 2. ...

    boost uuid.docx

    UUID 库还提供了比较操作和流输入输出,两个 UUID 值的比较是基于字典序的,分别使用了标 `::equal()` 和 `std::lexicographical_compare()`。 UUID 库内部定义了枚举类型 `variant_type`,标识了 UUID 的变体号,...

    很全的C/C++库参考手册英文版(含algorithm)

    `equal`和`lexicographical_compare`用于比较两个序列是否相等或字典序比较。 6. **集合操作算法**:`set_union`、`set_intersection`、`set_difference`和`set_symmetric_difference`分别用于求两个集合的并集、...

    04_算法1

    12. **lexicographical_compare**: 字典序比较两个区间,用于序列的排序。 例如,以下代码展示了如何使用`find`和`find_if`: ```cpp #include #include using namespace std; class A { public: int n; A...

    The Standard Algorithms in C++..zip

    1. **关系算法**:`equal()`用于检查两个范围内的元素是否相等,`lexicographical_compare()`则可以比较两个序列的字典顺序。 2. **比较算法**:`min_element()`和`max_element()`可以找到序列中的最小和最大元素,...

    cstring wstring string

    2. `std::string`的比较操作是区分大小写的,如果需要不区分大小写比较,可以使用`std::equal`或`std::lexicographical_compare`等算法。 3. 在处理宽字符字符串时,确保编译器设置与目标系统使用的字符编码一致,...

    C++ STL Reference Manua

    - **lexicographical_compare_3way**: 使用三路比较进行字典序比较。 - **lower_bound**: 找到排序容器中特定元素的下界位置。 - **make_heap**: 将容器转换为堆。 - **max**: 返回两个元素中的较大者。 - **max_...

    字典序相关介绍.zip

    在C++中,可以使用`std::lexicographical_compare`函数;在Python中,可以使用内置的`或`&gt;`操作符。 5. **字典序生成**:对于特定长度的字符串,生成所有可能的字典序排列可以用于密码学、组合优化或者搜索问题。这...

    STL用户手册

    - `lexicographical_compare_3way`:用三路比较法比较两个范围的字典序。 - `lower_bound`:在有序容器中查找特定元素的下界。 - `make_heap`:构建一个最大堆。 - `max`:返回两个元素中的较大者。 - `max_...

    algorithm_头文件_说明

    24. `lexicographical_compare`:比较两个序列,如同字典顺序比较字符串,支持自定义比较操作。 25. `lower_bound`:在有序序列中找到可以插入指定值而不破坏顺序的位置,支持自定义比较。 26. `max`:返回两个...

    C++ stl算法汇总(C++程序员必备)

    24. `lexicographical_compare`:按照字典序比较两个序列,可使用自定义比较操作。 25. `lower_bound`:在有序序列中找到可以插入指定值而不改变顺序的第一个位置,支持自定义比较。 26. `max`:返回两个元素中的...

    STL SET 集合算法

    - **lexicographical_compare**: 用于比较两个序列是否按字典顺序排列。这个函数对于排序和比较非常有用。 - **next_permutation** 和 **prev_permutation**: 这两个算法可以生成序列的下一个或前一个字典序排列。 ...

    STL算法一览(相关整理)

    1. lexicographical_compare():两个序列按字典序的第一个在前。 排列生成器 1. next_permutation():按字典序的下一个排列。 2. prev_permutation():按字典序的前一个排列。 这些算法可以帮助开发者快速、可靠...

    IBM XL C/C++ for AIX, V11.1 Standard C++ Library Reference

    - **`lexicographical_compare`**:比较两个范围内的元素序列。 - **`lower_bound`**:在有序范围内找到不小于给定值的第一个元素的位置。 以上只是`&lt;algorithm&gt;`头文件所提供功能的一小部分。通过学习并熟练掌握...

Global site tag (gtag.js) - Google Analytics