STL中简单算法实例sort()、next_permutation()

#include<iostream>
#include<string>
#include<algorithm>

using namespace std;

int main()
{
    string letters;
    cout<<"Enter the letters grouping (quit to quit): ";
    while(cin>>letters && letters != "quit")
    {
        cout<<"Permutations of "<<letters<<endl;
        sort(letters.begin(),letters.end());
        cout<<letters<<endl;
        while(next_permutation(letters.begin(),letters.end()))
            cout<<letters<<endl;
        cout<<"Enter next sequence (quit to quit):";
    }
    
    cout<<"Done.\n";
    return 0;
}

结果:

Enter the letters grouping (quit to quit): abc
Permutations of abc
abc
acb
bac
bca
cab
cba
Enter next sequence (quit to quit):

next_permutation()自动提供排列组合。

时间: 2024-11-07 20:42:57

STL中简单算法实例sort()、next_permutation()的相关文章

STL中排序算法的选择

 当大多数程序员需要对一组对象进行排序的时候,首先想到的一个算法是sort.sort是一个非常不错的算法,但它也并非在任何场合下都是完美无缺的.有时候我们并不需要一个完全的排序操作.比如说,如果我们有一个存放Widget的矢量,而我们希望将质量最好的20个Widget送给最重要的顾客,按照顾客的重要程度送上不同质量的Widget,那么只需要排序出前20个最好的Widget,其他的Widget可以不用排序.在这种情况下,需要的是一种部分排序的功能,而有一个名为partial_sort的算法正好

STL中的算法小结

(1)要运用STL的算法,首先必须包含头文件<algorithm>,某些STL算法用于数值处理,因此被定义于头文件<numeric> (2)所有STL算法都被设计用来处理一个或多个迭代器区间,第一个区间通常以起点和终点表示,至于其他区间,多数情况下你只需提供起点便足以,其终点可以自动以第一个区间的元素数量推断出来,调用者必须保证这些区间的有效性. STL算法采用覆盖模式而非安插模式,所以调用者必须保证目标区间拥有足够的元素空间,当然你也可以运用特殊的安插型迭代器将覆盖模式改变为安插

STL中heap算法(堆算法)

 ①push_heap算法 以下是push_heap算法的实现细节.该函数接收两个迭代器,用来表现一个heap底部容器(vector)的头尾,而且新元素已经插入究竟部的最尾端. template <class RandomAccessIterator> inline void push_heap(RandomAccessIterator first,RandomAccessIterator last) { //注意,此函数被调用时,新元素应已置于底部容器的最尾端 _push_heap_au

STL中排序算法

[1]    push_heap:默认为大根堆,主要是上滤操作. [2]    make_heap:创建堆,默认构建大根堆.他的实现基于这样一个简单的想法:将二叉树中的每个仅二层的子树都构成堆,那么整个数据集的布局几乎即可以满足堆的定义. [3]    pop_heap:将已构成堆的迭代器区间中最大值元素移到区间的最后元素位置.原来的最后元素调整为根结点元素后,再对除最后一个元素之外的区间调整. [4]    sort_heap:堆排序,时间复杂度O(nlog2n).内部通过一个while循环调

(四)STL中的算法

参考:<STL源码剖析>第6章 算法 #include <iostream> #include <vector> #include <functional> /*********************************************************************/ template<class InputIterator, class T> T accumulate(InputIterator first, I

STL中的所有算法(70个)

 STL中的所有算法(70个) STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorithm>,对于数值算法须包含<numeric>,<functional>中则定义了一些模板类,用来声明函数对象. STL中算法大致分为四类: 1.非可变序列算法:指不直接修改其所操作的容器内容的算法. 2.可变序列算法:指可以修改它们所操作的容器内

STL中的仿函数

仿函数(functors)在C++标准中采用的名称是函数对象(function objects).仿函数主要用于STL中的算法中,虽然函数指针虽然也可以作为算法的参数,但是函数指针不能满足STL对抽象性的要求,也不能满足软件积木的要求--函数指针无法和STL其他组件搭配,产生更灵活变化. 仿函数本质就是类重载了一个operator(),创建一个行为类似函数的对象.例如下面就是一个仿函数的例 struct plus{ int operator()(const int& x, const int&am

【转】STL算法 &lt;algorithm&gt;中各种算法解析

原文:http://blog.csdn.net/tianshuai1111/article/details/7674327 一,巡防算法 for_each(容器起始地址,容器结束地址,要执行的方法) #include <iostream> #include <algorithm> #include <vector> using namespace std; template<class T> struct plus2 { void operator()(T&

STL源码剖析——STL算法之sort排序算法

前言 由于在前文的<STL算法剖析>中,源码剖析非常多,不方便学习,也不方便以后复习,这里把这些算法进行归类,对他们单独的源码剖析进行讲解.本文介绍的STL算法中的sort排序算法,SGI STL中的排序算法不是简单的快速排序,而是交叉利用各种排序:堆排序.插入排序和快速排序:这样做的目的是提高效率,针对数据量比较大的采用快速排序,数据量比较小的可以采用堆排序或插入排序.注意:STL的sort排序算法的迭代器必须是随机访问迭代器. sort排序算法剖析 // Return a random n