#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <vector>
#include <time.h>
//: Poly.cpp
#include <iostream>
#include <initializer_list>
using namespace std;

/*  initializer_list 是C++11新增的,可以使用它来初始化STL:
           例如:std::vector<double> payments {45.9,39.3,19.59,89.1};
           上述声明与下述代码等价(这里显式的将列表指定为构造函数参数):
           std::vector<double> payments ({45.9,39.3,19.59,89.1});

在C++11 可以使用 {} 而不是 () 来 调用类的构造函数:
           shared_ptr<double> pd{new double};   //ok to use {} instead of ()
*/

/*   提供initializer_list 类的初衷,旨在能够将一系列的值换递给构造函数或其他函数。
     注意:initializer_list 的迭代器类型为const,因此不能修改initializer_list中的值。
    即不能这么做:
            *dl.begin() = 20.0;    错误做法。
    但可以将一个initializer_list 赋给另一个 initializer_list :
             dl={16.0,25.0,36.0,49.0,64.0};

*/
#include<iostream>
#include<initializer_list>

double sum(std::initializer_list<double> il);
double average(const std::initializer_list<double> &ril);

int main(int argc,char **argv){
    using std::cout;
    using std::endl;

    cout<<,,})<<,,})<<endl;
    std::initializer_list<double> dl={1.1,2.2,3.3,4.4,5.5};
    cout<<"List 2:sum = "<<sum(dl)<<", average= "<<average(dl)<<endl;

    dl={16.0,25.0,36.0,49.0,64.0};
    cout<<"List 3:sum = "<<sum(dl)<<", average= "<<average(dl)<<endl;

    ;
}
double sum(std::initializer_list<double> il){
    ;
    for(auto p = il.begin();p != il.end();++p){
        tot += *p;
    }
    return tot;

}

double average(const std::initializer_list<double> &ril){
    ;
    int n = ril.size();
    double ave = 0.0;
    ){
        for(auto p = ril.begin();p != ril.end();++p){
            tot+=*p;
        }
        ave = tot / n;
    }
    return ave;
}

STL初始化initializer_list的更多相关文章

  1. c++interview

    出自:https://github.com/huihut/interview Github    |    Docsify 简体中文    |    English 关于 本仓库是面向 C/C++ 技 ...

  2. C++Primer第5版学习笔记(四)

    C++Primer第5版学习笔记(四) 第六章的重难点内容         你可以点击这里回顾第四/五章的内容       第六章是和函数有关的知识,函数就是命名了的代码块,可以处理不同的情况,本章内 ...

  3. initializer_list、初始化列表、列表初始化

    什么是列表初始化 使用一个花括号来初始化变量,表现形式如下: std::vector<int>a{1,2,3,4,5}; 或者 std::vector<int>a = {1,2 ...

  4. C++11新特性——初始化列表 initializer_list

    破事水: 由于最近数据结构有个实验报告说是要对字符串进行排序,想偷个懒不想一个一个地赋值,虽然可以用strcpy和传入二级指针的形式直接写,但是这样感觉不美观漂亮. 然后就去膜了一下C++11的新特性 ...

  5. initializer_list 列表初始化

    initializer_list 列表初始化 用花括号初始化器列表初始化一个对象,其中对应构造函数接受一个 std::initializer_list 参数. #include <iostrea ...

  6. 第7课 列表初始化(2)_分析initializer_list<T>的实现

    1. 初始化列表的实现 (1)当编译器看到{t1,t2…tn}时便会生成一个initializer_list<T>对象(其中的T为元素的类型),它关联到一个array<T,n> ...

  7. [转]C++ STL list的初始化、添加、遍历、插入、删除、查找、排序、释放

    list是C++标准模版库(STL,Standard Template Library)中的部分内容.实际上,list容器就是一个双向链表,可以高效地进行插入删除元素. 使用list容器之前必须加上S ...

  8. 初始化列表initializer_list

    初始化列表定义在<initializer_list>,初始化列表简化了参数数量可变的函数的编写,初始化列表的所有的元素都应该是同一种数据类型 由于定义了列表中允许的类型,所以初始化列表是安 ...

  9. 标准模板库(STL) map —— 初始化问题

    map 容器没有:.reverse成员: map 是关联式容器,会根据元素的键值自动排序: map 容器不是连续的线性空间: 标准 STL 使用 RB-tree 为底层机制 ⇒ 自动排序(关于键值): ...

随机推荐

  1. 关于elementui表单数字校验踩坑记

    需求:1.输入类型是数字.2.数字大小有限制.3.非必填 做法: <el-form-item label="熟悉程度" prop="averageCaseRunTi ...

  2. Git安装教程(windows)

    Git是当今最流行的版本控制软件,它包含了许多高级工具,这里小编就讲一下Git的安装. 下载地址:https://git-scm.com/downloads 首先如下图:(点击next) 第二步:文件 ...

  3. python的学习笔记__初识函数

    函数定义与调用 #函数定义 def mylen(): """计算s1的长度""" s1 = "hello world" ...

  4. [C#学习笔记3]关于Main(string[ ] args)中args命令行参数

    Main(string[] args)方法是C#程序的入口,程序从这里开始执行,在这里结束.C#代码逻辑要包含在一个类型(Type)中,游离的.全局的变量或函数是不存在的,这里的类型包括类(class ...

  5. Kotlin 扩展——省略findViewById

    现在 Kotlin 安卓扩展插件能够提供与这些开源库功能相同的体验,不需要添加任何额外代码. import kotlinx.android.synthetic.main.activity_main.* ...

  6. WPF软件开发系统之二——水环境检测Surface触摸屏软件开发

    该系统采用C#.WPF语言开发,开发工具Visual Studio 2015.Blend,环境WIN7系统及以上,适用于PC.Windows触摸屏Surface等设备. 部分截图效果如下: 开发工具环 ...

  7. C#:System.Array简单使用

    1.C# 中的数组 1.1 定义数组: 1.1.1 定义不初始化:数据类型[] 数组名称= new 数据类型[元素个数];    1.1.2 定义并初始化:数据类型[] 数组名称= new 数据类型[ ...

  8. Jenkins-2.154 windows平台部署 FAQ

    部署过程中遇到的问题及解决办法如下 1.如何将 Jenkins 汉化? 1.进入系统管理 -> 插件管理 -> 选中“可选插件” 标签 -> 在过滤条件中输入“local”进行查找插 ...

  9. Python--day09(内存管理、垃圾回收机制)

    昨天内容回顾 1.  操作文件的三个步骤: 1.  打开文件:硬盘的空间被操作系统持有,文件对象被用用程序持续 2.  操作文件:读写操作 3.  释放文件:释放操作系统对硬盘空间的持有 2.  基础 ...

  10. jQuery的一些简单基础知识

    ### 什么是jQuery?jQuery(js+Query)是一款优秀的JavaScript库,帮助开发人员用最少的代码做更多的事情,官网网站http://jquery.com/ ### 为什么学习j ...