泛型1——泛型算法

本文介绍了C++中的几种常见泛型算法,如accumulate(累加)、equal(比较)、fill和fill_n(填充)、back_inserter(插入迭代器)、copy(复制)、replace和replace_copy(替换)、sort和unique(排序去重),并提供了相应的代码示例。
摘要由CSDN通过智能技术生成

C++中的泛型算法是比较通用的,主要包含在algorithm和numeric头文件中,可以方便地操作各种数据类型。下面是一些常见的泛型算法。

accumulate: 是一种只读算法,用于累加序列中的元素,示例如下:

#include <iostream>
#include <vector>
#include <numeric>
using namespace std;

int main() {
    vector<int> v = {1, 2, 3, 4, 5};
    int sum = accumulate(v.begin(), v.end(), 0);
    cout << "Sum is " << sum << endl;
    return 0;
}

equal: 是一种只读算法,用于判断两个序列是否相等,示例如下:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    vector<int> v1 = {1, 2, 3, 4, 5};
    vector<int> v2 = {1, 2, 3, 4, 5};
    if(equal(v1.begin(), v1.end(), v2.begin()))
        cout << "The two vectors are equal." << endl;
    else
        cout << "The two vectors are not equal." << endl;
    return 0;
}

fill和fill_n: 是一种修改容器的算法,用于填充容器的元素,示例如下:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    vector<int> v(5);
    fill(v.begin(), v.end(), 1); // fill all elements with 1
    for(int i : v)
        cout << i << " ";
    cout << endl;
    fill_n(v.begin(), 3, 2); // fill the first 3 elements with 2
    for(int i : v)
        cout << i << " ";
    return 0;
}

back_inserter: 是一个构造函数,返回一个用于在容器末尾插入新元素的插入迭代器。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    vector<int> v;
    auto it = back_inserter(v); // get a back inserter for v
    *it = 1; // insert elements at the end of v
    *it = 2;
    *it = 3;
    for(int i : v)
        cout << i << " ";
    return 0;
}

copy: 是一个复制算法,将输入范围中的元素复制到目的序列中。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    vector<int> v1 = {1, 2, 3, 4, 5};
    vector<int> v2(5);
    copy(v1.begin(), v1.end(), v2.begin());
    for(int i : v2)
        cout << i << " ";
    return 0;
}

replace和replace_copy:是一种修改算法,将匹配项替换为新值。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    vector<int> v = {1, 2, 3, 4, 5};
    replace(v.begin(), v.end(), 1, 6);
    for(int i : v){
        cout << i << ' ';
    }
    return 0;
}

sort和unique:是一种排序和去重算法,先排序后去重。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    vector<int> v = {1, 5, 2, 1, 4, 3, 3, 5};
    sort(v.begin(), v.end());
    auto end_unique = unique(v.begin(), v.end());
    v.erase(end_unique, v.end());
    for(int i : v){
        cout << i << ' ';
    }
    return 0;

}

这样就合理的理解和使用了C++泛型算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nighty_k

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值