目录
常用算术算法简介:
- accumulate 计算容器元素累计总和
- fill 向容器中添加元素
属于小型算法,使用时需要头文件
功能:
- 计算区间内容器元素累计总和
函数原型:
accumulate(iterator beg, iterator end, value);beg —— 开始迭代器
end —— 结束迭代器
value —— 起始值(额外累计值,不需要可以为 0)
测试代码:
- #include
- #include
- #include
- #include
- using namespace std;
-
- class Person {
- public:
- Person(string name, int age) :m_Name(name), m_Age(age) {}
- string m_Name;
- int m_Age;
- };
-
- class myAdd {
- public:
- int operator()(const int age, const Person& p) {
- return (age + p.m_Age);
- }
- };
-
- // 内置数据类型
- void test01() {
- vector<int>v;
- for (int i = 0; i <= 100; ++i) {
- v.push_back(i);
- }
-
- int sum = accumulate(v.begin(), v.end(), 0);
- cout << sum << endl; // 5050
- }
-
- // 自定义数据类型
- void test02() {
- vector
v; - Person p1("A", 10);
- Person p2("B", 20);
- Person p3("C", 30);
-
- v.push_back(p1);
- v.push_back(p2);
- v.push_back(p3);
-
- int sum = accumulate(v.begin(), v.end(), 0, myAdd());
- cout << sum << endl; // 60
- }
-
- int main() {
- test01();
- test02();
- system("pause");
- return 0;
- }
运行结果:

功能:
- 向容器中填充指定的元素
函数原型:
fill(iterator beg, iterator end, value);beg —— 开始迭代器
end —— 结束迭代器
value —— 填充的值
测试代码:
- #include
- #include
- #include
- #include
- #include
- using namespace std;
-
- class Person {
- public:
- Person(string name, int age) :m_Name(name), m_Age(age) {}
- string m_Name;
- int m_Age;
- };
-
- ostream& operator<<(ostream& cout, const Person& p) {
- cout << p.m_Name << " " << p.m_Age << endl;
- return cout;
- }
-
- template<typename T>
- void PrintVector(const T& x) {
- cout << x << " ";
- }
-
- void test01() {
- vector<int>v;
- v.push_back(10);
- v.push_back(20);
- v.push_back(30);
- v.resize(10);
- // 后期填充
- fill(v.begin(), v.end(), 50);
- for_each(v.begin(), v.end(), PrintVector<int>);
- cout << endl;
- }
-
- // 自定义数据类型
- void test02() {
- vector
v; - Person p1("A", 19);
- Person p2("B", 20);
- Person p3("C", 17);
- v.push_back(p1);
- v.push_back(p2);
- v.push_back(p3);
-
- Person fill_p("D", 100);
- fill(v.begin(), v.end(), fill_p);
- for_each(v.begin(), v.end(), PrintVector
); - }
-
-
- int main() {
- test01();
- test02();
- system("pause");
- return 0;
- }
运行结果:
