C++11之 initiater_list

initiater_list 作为C++11提供的一种可变参数的方法,有如下特点:

1、initiater_list 是一个模板类型,与其他模板类型不同的是,initiater_list 对象中的元素永远是常量,无法改变

2、使用 initiater_list 实现可变参数时,参数的类型必须相同,类似于数组(至于不同类型的情况,参照其他文章)

3、常见使用方法

initiater_list<T> lst默认初始化:T类型元素的空列表
initiater_list<T> lst{a,b,c...}

lst的元素常量和初始值一样多

lst的元素是对应初始值的副本

列表中的元素的const

lst2(lst)

 

lst2 = lst

拷贝或赋值一个initializer_list对象不会拷贝列表中的元素;拷贝后,原始列表和副本共享元素

 

 

 

lst.size()列表中的元素数量
lst.begin()返回指向 lst 中首元素的指针
lst.end()返回指向 lst 中尾元素下一位置的指针

 示例代码:

#include <iostream>

using namespace std;

int getSum( initializer_list<int> lInt )
{
    int sum = 0;

    for( auto i = lInt.begin(); i != lInt.end(); ++i )
    {
        sum += *i;
    }

    return sum;
}

int getSum( char ch, initializer_list<string> sl )
{
    int sum = 0;

    switch( ch )
    {
    case 'a':
    {
        for( auto i : sl )
        {
            sum += i.size();
        }
    }
    break;

    case 's':
    {
        for( auto i : sl )
        {
            if( sum <= i.size() )
            {
                sum = i.size();
            }
        }
    }
    break;

    default:
        break;
    }

    return sum;
}

//by zhaocl
int main()
{
    cout << getSum( { 1, 2, 3 } ) << endl;
    cout << getSum( 'a', { "biu1", "biu2" } ) << endl;
    cout << getSum( 's', { "biu1", "biu1biu2" } ) << endl;;
    system( "pause" );
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值