C++ 算法包

for_each

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

class __F {
public:
    void operator() (int __first) {
        std::cout << "自定义一元谓词:" << __first << std::endl;
    }
};

int main() {
    std::vector<int> vectorVar;
    vectorVar.insert(vectorVar.begin(), 1);
    vectorVar.insert(vectorVar.begin(), 2);
    vectorVar.insert(vectorVar.begin(), 3);

    std::for_each(vectorVar.begin(), vectorVar.end(), __F());

    return 0;
}

transform

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

class __unary_op {
public:
    int operator() (const int __first) {
        return __first + 100;
    }
};

int main() {
    std::vector<int> vectorVar;
    vectorVar.insert(vectorVar.begin(), 1);
    vectorVar.insert(vectorVar.begin(), 2);
    vectorVar.insert(vectorVar.begin(), 3);
    
    // 方式1
    std::transform(vectorVar.begin(), vectorVar.end(), vectorVar.begin(), __unary_op());
    for (std::vector<int>::iterator iteratorVar = vectorVar.begin(); iteratorVar != vectorVar.end(); iteratorVar++) {
        std::cout << "方式1:" << *iteratorVar << std::endl;
    }

    // 方式2
    std::vector<int> res;
    res.resize(vectorVar.size());
    std::transform(vectorVar.begin(), vectorVar.end(), res.begin(), __unary_op());
    for (std::vector<int>::iterator iteratorVar = res.begin(); iteratorVar != res.end(); iteratorVar++) {
        std::cout << "方式2:" << *iteratorVar << std::endl;
    }

    return 0;
}

find

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

int main() {
    std::vector<int> vectorVar;
    vectorVar.insert(vectorVar.begin(), 1);
    vectorVar.insert(vectorVar.begin(), 2);
    vectorVar.insert(vectorVar.begin(), 3);

    std::vector<int>::iterator iteratorVar = std::find(vectorVar.begin(), vectorVar.end(), 2);
    if (iteratorVar != vectorVar.end()) {
        std::cout << "查找到" << std::endl;
    } else {
        std::cout << "没找到" << std::endl;
    }

    return 0;
}

find_if

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

class __pred {
public:
    int number;
    __pred(int number) :number(number) {}
    bool operator() (const int value) {
        return number == value;
    }
};

int main() {
    std::vector<int> vectorVar;
    vectorVar.insert(vectorVar.begin(), 1);
    vectorVar.insert(vectorVar.begin(), 2);
    vectorVar.insert(vectorVar.begin(), 3);

    std::vector<int>::iterator iteratorVar = std::find_if(vectorVar.begin(), vectorVar.end(), __pred(2));
    if (iteratorVar != vectorVar.end()) {
        std::cout << "查找到" << std::endl;
    } else {
        std::cout << "没找到" << std::endl;
    }

    return 0;
}

count

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

int main() {
    std::vector<int> vectorVar;
    vectorVar.insert(vectorVar.begin(), 1);
    vectorVar.insert(vectorVar.begin(), 2);
    vectorVar.insert(vectorVar.begin(), 3);
    vectorVar.insert(vectorVar.begin(), 2);

    int number = std::count(vectorVar.begin(), vectorVar.end(), 2);
    std::cout << "2出现的次数:" << number << std::endl;
    
    return 0;
}

merge

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

int main() {
    std::vector<int> vectorVar;
    vectorVar.push_back(1);
    vectorVar.push_back(2);
    vectorVar.push_back(3);

    std::vector<int> vectorVar2;
    vectorVar2.push_back(10);
    vectorVar2.push_back(20);
    vectorVar2.push_back(30);

    std::vector<int> vectorRes;
    vectorRes.resize(vectorVar.size() + vectorVar2.size());

    std::merge(vectorVar.begin(), vectorVar.end(), vectorVar2.begin(), vectorVar2.end(), vectorRes.begin());

    for (std::vector<int>::iterator iteratorVar = vectorRes.begin(); iteratorVar != vectorRes.end(); iteratorVar++) {
        std::cout << *iteratorVar << std::endl;
    }

    return 0;
}

sort

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

int main() {
    std::vector<int> vectorVar;
    vectorVar.push_back(10);
    vectorVar.push_back(20);
    vectorVar.push_back(30);

    // 从小到大
//    std::sort(vectorVar.begin(), vectorVar.end(), std::less<int>());
    // 从大到小
    std::sort(vectorVar.begin(), vectorVar.end(), std::greater<int>());

    for (std::vector<int>::iterator iteratorVar = vectorVar.begin(); iteratorVar != vectorVar.end(); iteratorVar++) {
        std::cout << *iteratorVar << std::endl;
    }

    return 0;
}

random_shuffle

随机打乱元素顺序。

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

int main() {
    std::vector<int> vectorVar;
    vectorVar.push_back(10);
    vectorVar.push_back(20);
    vectorVar.push_back(30);
    vectorVar.push_back(50);
    vectorVar.push_back(8);

    std::random_shuffle(vectorVar.begin(), vectorVar.end());

    for (std::vector<int>::iterator iteratorVar = vectorVar.begin(); iteratorVar != vectorVar.end(); iteratorVar++) {
        std::cout << *iteratorVar << std::endl;
    }

    return 0;
}

copy

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

int main() {
    std::vector<int> vectorVar;
    vectorVar.push_back(10);
    vectorVar.push_back(20);
    vectorVar.push_back(30);
    vectorVar.push_back(50);
    vectorVar.push_back(8);

    std::vector<int> res;
    res.resize(vectorVar.size());

    std::copy(vectorVar.begin(), vectorVar.end(), res.begin());

    for (std::vector<int>::iterator iteratorVar = res.begin(); iteratorVar != res.end(); iteratorVar++) {
        std::cout << *iteratorVar << std::endl;
    }

    return 0;
}

replace

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

int main() {
    std::vector<int> vectorVar;
    vectorVar.push_back(10);
    vectorVar.push_back(20);
    vectorVar.push_back(30);
    vectorVar.push_back(50);
    vectorVar.push_back(8);

    // 将一定范围内的元素,将为10的,替换为21
    // std::replace(vectorVar.begin(), vectorVar.begin() + 2, 10, 21);

    // 所有的元素,进行替换
    std::replace(vectorVar.begin(), vectorVar.end(), 10, 21);


    for (std::vector<int>::iterator iteratorVar = vectorVar.begin(); iteratorVar != vectorVar.end(); iteratorVar++) {
        std::cout << *iteratorVar << std::endl;
    }

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值