C++ algorithm头文件中的min_element/max_element/sort/copy

1. min_element/max_element

找出容器中的最小/最大值:

using namespace std;
int main()
{
    vector<int> L;
    for (int i=0; i<10; i++) 
        L.push_back(i);
    vector<int>::iterator min_it = min_element(L.begin(),L.end());
    vector<int>::iterator max_it = max_element(L.begin(),L.end());
    cout << "Min is " << *min_it << endl;
    cout << "Max is " << *max_it << endl;
    return 1;
}

 程序的输出结果为:

Min is 0
Max is 9

2. sort

 对容器进行排序:

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

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void Print(vector<int> &L)
{
    for (vector<int>::iterator it=L.begin(); it!=L.end();it++)
    cout << *it << " ";
    cout << endl;
}
int main()
{
    vector<int> L;
    for (int i=0; i<5; i++) 
        L.push_back(i);
    for (int i=9; i>=5; i--) 
        L.push_back(i);
    Print(L);
    sort(L.begin(), L.end());
    Print(L);
    sort(L.begin(), L.end(), greater<int>()); // 按降序排序
    Print(L);
    return 0;
}

程序的输出结果为:

0 1 2 3 4 9 8 7 6 5
0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1 0

3. copy

 在容器间复制元素:

#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
    // 先初始化两个向量v1 和v2
    vector <int> v1, v2;
    for (int i=0; i<=5; i++) 
        v1.push_back(10*i);
    for (int i=0; i<=10; i++) 
        v2.push_back(3*i);
    cout << "v1 = ( " ;
    for (vector <int>::iterator it=v1.begin(); it!=v1.end();it++)
        cout << *it << " ";
    cout << ")" << endl;
    cout << "v2 = ( " ;
    for (vector <int>::iterator it=v2.begin(); it!=v2.end();it++)
        cout << *it << " ";
    cout << ")" << endl;
    // 将v1 的前三个元素复制到v2 的中间
    copy(v1.begin(), v1.begin()+3, v2.begin()+4);
    cout << "v2 with v1 insert = ( " ;
    for (vector <int>::iterator it=v2.begin(); it!=v2.end();it++)
        cout << *it << " ";
    cout << ")" << endl;
    // 在v2 内部进行复制,注意参数2 表示结束位置,结束位置不参与复制
    copy(v2.begin()+4, v2.begin()+7, v2.begin()+2);
    cout << "v2 with shifted insert = ( " ;
    for (vector <int>::iterator it=v2.begin(); it!=v2.end();it++)
    cout << *it << " ";
    cout << ")" << endl;
    return 1;
}

程序的输出结果为:

v1 = ( 0 10 20 30 40 50 )
v2 = ( 0 3 6 9 12 15 18 21 24 27 30 )
v2 with v1 insert = ( 0 3 6 9 0 10 20 21 24 27 30 )
v2 with shifted insert = ( 0 3 0 10 20 10 20 21 24 27 30 )

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值