c++STL之常用算术生成算法

accumulate:计算容器元素累计总和

fill:向容器中添加元素

1.accumulate

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

#include <numeric>

//常用算术生成算法
void test01()
{
    vector<int>v;

    for (int i = 0; i <= 100; i++)
    {
        v.push_back(i);
    }
    //参数3  起始累加值
    int total = accumulate(v.begin(), v.end(), 0);

    cout << "total = " << total << endl;
}

int main() {

    test01();

    system("pause");

    return 0;
}

2.fill

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

//常用算术生成算法 fill
void myPrint(int val)
{
    cout << val << " ";
}
void test01()
{
    vector<int>v;
    v.resize(10);

    //后期重新填充
    fill(v.begin(), v.end(), 100);
    for_each(v.begin(), v.end(), myPrint);

    cout << endl;
}

int main() {

    test01();

    system("pause");

    return 0;
}

原文地址:https://www.cnblogs.com/xiximayou/p/12114785.html

时间: 2024-10-18 16:18:18

c++STL之常用算术生成算法的相关文章

C++ STL 常用算术和生成算法

C++ STL 常用算术和生成算法 accumulate() accumulate: 对指定范围内的元素求和,然后结果再加上一个由val指定的初始值. #include<numeric> vector<int> vecIntA; vecIntA.push_back(1); vecIntA.push_back(3); vecIntA.push_back(5); vecIntA.push_back(7); vecIntA.push_back(9); int iSum = accumul

stl中常用的排序算法

#include"iostream" #include"vector" using namespace std; #include"string" #include"algorithm" void main_mergr() { vector<int > v1; v1.push_back(1); v1.push_back(2); v1.push_back(3); vector<int > v2; v2.p

C++ STL 之 常用算法

#include <iostream> #include <vector> #include <algorithm> using namespace std; // transform 将一个容器的元素 搬运 到另一个容器中 struct MyPlus { int operator()(int val) { return val + 100; } }; void MyPrint(int val) { cout << val << " &

两种常用的全排列算法(java)

问题:给出一个字符串,输出所有可能的排列. 全排列有多种算法,此处仅介绍常用的两种:字典序法和递归法. 1.字典序法: 如何计算字符串的下一个排列了?来考虑"926520"这个字符串,我们从后向前找第一双相邻的递增数字,"20"."52"都是非递增的,"26 "即满足要求,称前一个数字2为替换数,替换数的下标称为替换点,再从后面找一个比替换数大的最小数(这个数必然存在),0.2都不行,5可以,将5和2交换得到"956

基本图形生成算法

1.直线生成算法 所谓图元的生成,是指完成图元的参数表示形式(由图形软件包的使用者指定)到点阵表示形式(光栅显示系统刷新时所需的表示形式)的转换.通常也称扫描转换图元. 直线的扫描转换:确定最佳逼近于该直线的一组像素,并且按扫描线顺序对这些像素进行写操作. 三个常用算法:1.数值微分法DDA:2.中点画线法:3.Bresenham算法. 生成目标,求与直线段充分接近的像素集 生成前提条件:1.像素网格均匀,坐标为整数值:2.直线段的宽度为1:3.直线段的斜率k的取值范围为[-1,1]. 1.1

计算机图形学 - 全斜率直线中点生成算法

算法描述: 直线中点生成算法 假定直线斜率k在(0,1]之间,当前像素点为,则下一个像素点有两种可选择点P1或P2. 若P1与 P2的中点称为M,Q为理想直线与x=xp+1垂线的交点. • 当M在Q的下方时,则取P2为下一个像素点: • 当M在Q的上方时,则取P1为下一个像素点. 这就是中点画线法的基本原理. 算术推导: 详细代码:Computer Graphics - code_1 生成结果:

随机排列生成算法

这篇文章主要是一个闲文.如果您正在寻求一个理想的随机排列生成算法,直接阅读方法3,或是直接使用STL里提供的random_shuffle()方法另外请注意,这里所讨论的算法并不是新的. 什么是随机排列? 一个随机排列是一组位于随机位置的对象.给定一个对象,1, 2, 3 ... n,随机排列看起来就是,p1, p2, p3 ... pn其中px是从原来的对象集合中选取的随机值. 随机排列对于扑克牌洗牌,随机产生益智游戏,产生随机序列,或者生成一个随机子集合集(从 n 个对象中随机选出 k 个对象

如何评价一个伪随机数生成算法的优劣

以下来自我在知乎的回答.http://www.zhihu.com/question/20222653 谈到随机性,这大概是一个令人困惑哲学问题吧.随机行为精确地说究竟指的是什么,最好是有定量的定义.Kolmogorov曾提出一种判定随机性的方法: 对于无穷的随机数序列,无法用其子序列描述.J.N.Franklin则认为:如果一个序列具有从一个一致同分布的随机变量中独立抽样获得的每个无限序列 都有的性质,则是随机的.这些定义都不是很精确,有时甚至会导致矛盾.可见数学家在谈到这个问题时是多么的审慎.

转:体积阴影(Shadow Volumes)生成算法

下面以最快的速度简单谈谈阴影生成技术,目前普遍采用的一般有三种:Planar Shadow.Shadow Mapping和Shadow Volume,前者类似投影,计算最简单,缺点只能绘制抛射在平面上的阴影:Shadow mapping利用站在光源处所沿光源法线看去所生成的深度图来检测场景中的体象素是否处于阴影中,缺点是光源与物体位置相对固定.且在极端情况下计算精度差,不太适合精确到象素的动态光阴场合:Shadow Volume是目前最适合精确表现动态光阴场景的技术,适用性最广,其典型的适用范例