STL初始化initializer_list
#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的更多相关文章
- c++interview
出自:https://github.com/huihut/interview Github | Docsify 简体中文 | English 关于 本仓库是面向 C/C++ 技 ...
- C++Primer第5版学习笔记(四)
C++Primer第5版学习笔记(四) 第六章的重难点内容 你可以点击这里回顾第四/五章的内容 第六章是和函数有关的知识,函数就是命名了的代码块,可以处理不同的情况,本章内 ...
- initializer_list、初始化列表、列表初始化
什么是列表初始化 使用一个花括号来初始化变量,表现形式如下: std::vector<int>a{1,2,3,4,5}; 或者 std::vector<int>a = {1,2 ...
- C++11新特性——初始化列表 initializer_list
破事水: 由于最近数据结构有个实验报告说是要对字符串进行排序,想偷个懒不想一个一个地赋值,虽然可以用strcpy和传入二级指针的形式直接写,但是这样感觉不美观漂亮. 然后就去膜了一下C++11的新特性 ...
- initializer_list 列表初始化
initializer_list 列表初始化 用花括号初始化器列表初始化一个对象,其中对应构造函数接受一个 std::initializer_list 参数. #include <iostrea ...
- 第7课 列表初始化(2)_分析initializer_list<T>的实现
1. 初始化列表的实现 (1)当编译器看到{t1,t2…tn}时便会生成一个initializer_list<T>对象(其中的T为元素的类型),它关联到一个array<T,n> ...
- [转]C++ STL list的初始化、添加、遍历、插入、删除、查找、排序、释放
list是C++标准模版库(STL,Standard Template Library)中的部分内容.实际上,list容器就是一个双向链表,可以高效地进行插入删除元素. 使用list容器之前必须加上S ...
- 初始化列表initializer_list
初始化列表定义在<initializer_list>,初始化列表简化了参数数量可变的函数的编写,初始化列表的所有的元素都应该是同一种数据类型 由于定义了列表中允许的类型,所以初始化列表是安 ...
- 标准模板库(STL) map —— 初始化问题
map 容器没有:.reverse成员: map 是关联式容器,会根据元素的键值自动排序: map 容器不是连续的线性空间: 标准 STL 使用 RB-tree 为底层机制 ⇒ 自动排序(关于键值): ...
随机推荐
- 关于图片适配不同尺寸的image View(实战)
分享人:广州华软 佐罗 一. 前言 在前端开发过程中,设计稿中往往只提供一张图片,但是app内需要用到的尺寸各种各样. 同时图片不仅是信息的直接表达,也会为网站起到美观点缀的作用,图片的变形.过分裁切 ...
- 荣耀7.0系统手机最简单激活Xposed框架的步骤
对于喜欢玩手机的小伙伴来说,很多时候会使用到Xposed框架及各类功能彪悍的模块,对于5.0以下的系统版本,只要手机能获得Root权限,安装和激活Xposed框架是比较简便的,但随着系统版本的不断更新 ...
- Android远程桌面助手(B1391)
ARDC(B1391), Download:https://files.cnblogs.com/files/we-hjb/ARDC%28B1391%29_EN.7z Android远程桌面助手(B13 ...
- packagereference 里面的资产是怎么回事?
<PackageReference Include="Newtonsoft.Json" Version="9.0.1"> <ExcludeAs ...
- iBatis第一章:基础知识概述 & MVC思想
一.java是一门十分受开发人员欢迎的语言,在开发语言排行榜中名列前茅,人们对其看法不尽相同,就我自身感受而言,我觉得java语言的主要优势体现在如下几方面:1.java属于开源语言,开发人员可以找到 ...
- 配置用户Log on as service
Logon to the computer with administrative privileges. Open the ‘Administrative Tools’ and open the ‘ ...
- vim编辑器操作
vim被称为编辑器之神,另外一个是sublime.vim较vi比较高级,vi适用于文本编辑,vim更加适合于coding.凡是vim里面的命令在vi都是适用的. vim的大众版的三种模式(其实不止三种 ...
- C#:对字符串的各种处理
字符串截取 SubString OR Remove string str3 = "123abc456"; //str3 = str3.Substring(0, i); //从左边开 ...
- Centos7修改yum源
1. 备份本地yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak 2.获取阿里yum源配置文 ...
- scala的多种集合的使用(1)之集合层级结构与分类
一.在使用scala集合时有几个概念必须知道: 1.谓词是什么? 谓词就是一个方法,一个函数或者一个匿名函数,接受一个或多个函数,返回一个Boolean值. 例如:下面方法返回true或者false, ...