cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition

cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition
random_shuffle()//重排,随机重排,打乱顺序
partition()分区,把符合规则的分成两个区域,比如奇数放一边,偶数放一边.默认之间的位置会变化
stable_partition(),稳定的分区,分区后,默认之间的位置不会变化,
比如:2,3,5,6,分区后,2依然在6的前面。3依然在5的前面


STL算法--变序性算法
reverse() 逆转
reverse_copy()一边复制一般逆转
rotate()旋转,某个位置开始前后交换位置
rotate(ivec2.begin(), ivec2.begin() + 2, ivec2.end());
1,2,3,4,5,6,7,8,9,
rotate后:
3,4,5,6,7,8,9,1,2,

rotate_copy()一边复制一般旋转

、、、
next_permutation()
prev_permutation()
random_shuffle()
partition()
stable_partition()
复制代码
/*cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition
random_shuffle()//重排,随机重排,打乱顺序
partition()分区,把符合规则的分成两个区域,比如奇数放一边,偶数放一边.默认之间的位置会变化
stable_partition(),稳定的分区,分区后,默认之间的位置不会变化,
比如:2,3,5,6,分区后,2依然在6的前面。3依然在5的前面


STL算法--变序性算法
reverse() 逆转
reverse_copy()一边复制一般逆转
rotate()旋转,某个位置开始前后交换位置
rotate(ivec2.begin(), ivec2.begin() + 2, ivec2.end());
1,2,3,4,5,6,7,8,9,
rotate后:
3,4,5,6,7,8,9,1,2,

rotate_copy()一边复制一般旋转

、、、
next_permutation()
prev_permutation()
random_shuffle()
partition()
stable_partition()

*/

#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>

using namespace std;

 template < typename TT5>
 void print1(TT5 &ilist)
 {
        for (TT5::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)
             {
                 cout << *iter << ' ';
        
                }
    cout << endl;
     }

int main()
{
    vector<int> ivec,ivec2,ivec3;
    for (int i = 1; i <= 9; ++i)
    {
        ivec.push_back(i);
        
    }
    ivec3 = ivec2 = ivec;
    print1(ivec);

    random_shuffle(ivec.begin(),ivec.end());
    cout << "重排后:" << endl;
    print1(ivec);
    cout << "ivec2一般分区前:" << endl;
    print1(ivec2);
    

    cout << "分区演示:偶数放左,奇数放右边" << endl;


    //预定义函数对象:not1(bind2nd(modulus<int>(), 2))
    //https://blog.csdn.net/txwtech/article/details/104383237
    partition(ivec2.begin(), ivec2.end(), not1(bind2nd(modulus<int>(), 2)));
    cout << "ivec2一般分区后:" << endl;
    print1(ivec2);

    cout << "稳定分区前ivec3:" << endl;
    print1(ivec3);

    stable_partition(ivec3.begin(), ivec3.end(), not1(bind2nd(modulus<int>(), 2)));
    cout << "稳定分区后ivec3:" << endl;
    print1(ivec3);
    return 0;
}
复制代码

 

posted @   txwtech  阅读(214)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示