C C++知识点 SDL容器算法

1,使用兰布达表达式完成数组遍历打印,用find函数实现查找数组元素(需要引入include)

void main()
{
    vector<int> v;
    v.push_back(12);
    v.push_back(145);
    v.push_back(2);
    v.push_back(76);

    for_each(v.begin(), v.end(), [](int v){ cout << v << endl; });//用兰布达表达式完成打印数组值
    cout << "\n\n\n\n\n";
    auto i = find(v.begin(), v.end(), 12);//查找数组元素,
    cout << *i << endl;
    cin.get();
}

2、find_if_not利用兰布达表达式查找不符合条件的数字(需要引入include

void main()
{
    vector<int> v;
    v.push_back(12);
    v.push_back(145);
    v.push_back(2);
    v.push_back(76);

    for_each(v.begin(), v.end(), [](int i){cout << i << endl; });

    auto i = find_if_not(v.begin(), v.end(), [](int v)->bool{return (v < 4); });//如果这个数字不小于4则返回第一个不小于4的数字
    cout << "\n\n\n\n";
    if (i == v.end())
    {
        cout << "未找到" << endl;
    }
    else
    {
        cout << *i << endl;
    }


    cin.get();
}

3、sort函数对数组进行排序,fill函数填充数组(include)

void main()
{
    vector<int> v;
    v.push_back(23);
    v.push_back(2);
    v.push_back(324);
    v.push_back(1);
    sort(v.begin(), v.end());//对v进行排序,如果已有数据则进行覆盖

    fill(v.begin() + 2, v.end() - 1, 67);

    for_each(v.begin(), v.end(), [](int v){cout << v << endl; });//



    cin.get();
}

4、count方法,统计multiset中的某个元素数量

void main()
{
    multiset<int> set;
    set.insert(23);
    set.insert(2234);
    set.insert(23);
    set.insert(34);
    set.insert(23);
    set.insert(4);

    int num = count(set.begin(), set.end(), 23);//统计multiset中某个元素的数量
    cout << num << endl;

    cin.get();
}

5、random_shuffle对数组进行重新排序(include)

void main()
{
    vector<int> v;
    int i = 0; 
    for (; i < 5; i++)
    {
        v.push_back(i);
    }

    random_shuffle(v.begin(), v.end());//对一个数组进行重新排序,结果是随机的
    for_each(v.begin(), v.end(), show<int>());

    cout << "\n\n\n\n\n" << endl;
    random_shuffle(v.begin(), v.end());
    for_each(v.begin(), v.end(), show<int>());

    cout << "\n\n\n\n\n" << endl;
    random_shuffle(v.begin(), v.end());
    for_each(v.begin(), v.end(), show<int>());

    cin.get();
}

6,rotate函数,对数组元素进行整理

void main()
{
    vector<int> v;
    for (int i = 0; i < 5; i++)
    {
        v.push_back(i);
    }

    rotate(v.begin(), v.begin()+2, v.end()-1);//将v.begin()到v.begin()+2的数据移动到v.end()-1之后,
    for_each(v.begin(), v.end(), show<int>());
    cin.get();
}

7,prev_permutation函数 记录数组的排序过程

void  mainwww()
{
    int a[4] = { 2, 1, 3, 10 };
    do
    {
        cout << a[0] << " " << a[1] << " " << a[2]<< "  " << a[3] << "\n";

    } while (prev_permutation(a, a + 4));//排序并显示步骤

    cin.get();

}

8,对对象数组进行排序


class student
{
public:
    int age;
    string name;
public:
    student(int age, string name) :name(name), age(age)
    {
    }

    bool operator<(const student &s) const
    {
        return this->age < s.age;
    }
};

void main()
{
    vector<student> s;
    {
        student stu(34, "libai");
        s.push_back(stu);
    }
    {
        student stu(56, "dufu");
        s.push_back(stu);
    }
    {
        student stu(3334, "wangwei");
        s.push_back(stu);
    }
    {
        student stu(3, "baijuyi");
        s.push_back(stu);
    }

    sort(s.begin(), s.end());

    for (int i = 0; i < s.size(); i++)
    {
        cout << s[i].name << endl;
    }

    cin.get();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值