初始化列表initializer_list

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

由于定义了列表中允许的类型,所以初始化列表是安全的;

#include <iostream>
#include <initializer_list>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int makeSum(std::initializer_list<int> lsh)
{
    int total = 0;
    for(auto i : lsh)
    {
        total += i;
    }
    return total;
}

int main(int argc, char** argv)
{
    //int arrayInt[10];
    //for(int i = 0;i != 10;++i)
    //{
    //    arrayInt[i] = i + 1;
    //}
    std::cout <<  "makeSum({1,3,4,5,6,9}) : " << makeSum({1,3,4,5,6,9}) << std::endl;

    return 0;
}

结构是:

makeSum({1,3,4,5,6,9}) : 28

但是在main函数内这么写就是错误的

std::cout <<  "makeSum({1,3,4,5,6,9}) : " << makeSum({1,3,4,5.0}) << std::endl;

原文地址:https://www.cnblogs.com/boost/p/10353475.html

时间: 2024-10-14 07:33:10

初始化列表initializer_list的相关文章

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

破事水: 由于最近数据结构有个实验报告说是要对字符串进行排序,想偷个懒不想一个一个地赋值,虽然可以用strcpy和传入二级指针的形式直接写,但是这样感觉不美观漂亮. 然后就去膜了一下C++11的新特性——初始化列表,概念就不说了,就讲下这东西具体怎么用吧,就是正常的写一个构造函数,然后把参数改为initializer_list<数据类型> &t 如图所示. 可以理解为传入的参数数据被放到了一个储存器t中,利用C++11的auto可以直接遍历这个储存器t,然后把遍历到的值给结构体用.这里

C++11 初始化列表(initializer_list)

C++11对原有的初始化列表(用花括号围住的若干个值)进行了大幅的扩展.以下写法在C++11中都是被允许的: 1 int static_arr[5] = {1, 2, 3, 4}; // static_arr[4] is not initialized here 2 int static_arr2[] {1, 2, 3, 4}; // operator = can be omitted 3 4 int* dynamic_arr = new int[5] {1, 2, 3, 4}; 5 // dy

列表初始化 分析initializer_list&lt;T&gt;的实现

列表初始化(1)_统一初始化 1. 统一初始化(Uniform Initialization) (1)在C++11之前,很多程序员特别是初学者对如何初始化一个变量或对象的问题很容易出现困惑.因为可以用小括号.大括号或赋值操作符等多种方式进行初始化. (2)基于这个原因,C++11引入了“统一初始化”的概念.这意味着我们可以使用{}这种通用的语法在任何需要初始化的地方. [实例分析]初始化列表 #include <iostream> #include <vector> #includ

c++11之初始化列表

一.前言 C++的学习中,我想每个人都被变量定义和申明折磨过,比如我在大学笔试过的几家公司,都考察了const和变量,类型的不同排列组合,让你区别有啥不同.反正在学习C++过程中已经被折磨惯了,今天再来看看重温下那段"辉煌的历史".先来看一段代码: Player pa; // (a) Player pb(); // (b) Player pc = Player(); // (c) Player pd(Player()); // (d) pd = Player() // (e) a,b,

[C++11笔记001]修改通用库中的XDynamicArray,使它可以支持C++11的初始化列表和for循环

今天,有空翻了一下<C++Primer plus(第六版)>,看到里面有介绍新的for循环和初始化列表,但是我实现的动态数组XDynamicArray不支持这些新特性,没办法,只好进行改造了. 首先是for循环,如下面的样式 for(auto e:stList) { cout<<e<<endl; } 是于就各种google,和查找C++11的array的源代码,总结:就是提供一个标准的iterator和begin,end这两个方法,就可以了. 是于定义了一个iterat

C++学习笔记18,C++11中的初始化列表构造函数(二)

C++11中的初始化列表构造函数(Initialize_list Constructors)是将std::initializer_list<T>作为第一个参数的构造函数,并且没有任何其他参数(或者其他参数具有默认值).例如: #include <iostream> #include <initializer_list>//必须包含该头文件 #include <vector> using namespace std; class A { private: ve

c++初始化列表

何谓初始化列表 与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段.在C++中,struct和class的唯一区别是默认的访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示. struct foo { string name ; int id ; foo(string s, int i):name(s), id(i){} ; // 初始化列表 }; 构造函数的两个执行阶段 构造函数的执行

【C/C++】构造函数、默认构造函数、成员初始化列表

常见问题 Q1. 下列关于构造函数的描述中,错误的是( ) A. 构造函数可以设置默认的参数 B. 构造函数在定义类对象时自动执行 C. 构造函数可以是内联函数 D. 构造函数不可以重载 Q2. 下列代码中a.b的各个成员变量值是多少? 1 class Student 2 { 3 public: 4 Student() {} 5 void show(); 6 private: 7 string name; 8 int number; 9 int score; 10 }; 11 Student a

C++对象模型——成员初始化列表(第二章)

2.4    成员初始化列表 (Member Initialization List) 当编写一个类的构造函数时,有可能设定类成员的初始值,或者通过成员初始化列表初始化,或者在构造函数内初始化,除了四种情况,其实任何选择都差不多. 本节中,首先澄清何时使用初始化列表才有意义,然后解释初始化列表内部的真正操作是什么,然后再看一些微妙的陷阱.  下列情况中,为了让程序能够被顺利编译,必须使用成员初始化列表(不能在构造函数内初始化): 1.    当初始化一个引用的成员时 2.    当初始化一个常量