• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c++11::initializer_list

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

#include <initializer_list>
template <class T> class initializer_list;
initializer_list对象中的元素永远是常量值const T,不能initializer_list对象中元素的值修改

 

1、可以使用初始化列表语法, 将stl容器初始化一系列值,容器类将initializer_list<T> 作为构造函数。
initializer_list类型元素必须相同,编译器将进行必要转换。
std::vector<double> Array{1.12, 4.35, 5.756, 10, 20};
std::vector<double> Array{1.12, 4.35, 5.756, 10.0, 20.0};

 

2、c++11新增通用的初始化语法,可以使用{}而不是()来调用类构造函数。
int units_sold=0;
int units_sold(0);
int units_sold={0}; 
int units_sold{0};  
shared_ptr<double> pd {new double}

 

3、initializer_list类型来实现构造函数,在新建对象时,就可以使用列表初始化的方式了。
class FooVector
{
    std::vector<int> content_;

public:
    FooVector(std::initializer_list<int> list)
    {
        for (auto it = list.begin(); it != list.end(); ++it)
        {
            content_.push_back(*it);
        }
    }
};

class FooMap
{
    std::map<int, int> content_;
    using pair_t = std::map<int, int>::value_type;

public:
    FooMap(std::initializer_list<pair_t> list)
    {
        for (auto it = list.begin(); it != list.end(); ++it)
        {
            content_.insert(*it);
        }
    }
};

int main(void)
{
    FooVector foo1 = { 1, 2, 3, 4, 5 };
    FooMap foo2 = { { 1, 2 }, { 3, 4 }, { 5, 6 } };
    return 0;
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
使用GDB命令行调试器调试C/C++程序发布时间:2022-07-13
下一篇:
两种语言实现设计模式(C++和Java)(七:原型模式)发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap