菜鸟笔记
提升您的技术认知

c 列表初始化-ag真人游戏

initializer list

在c 中集合(列表)初始化已经成为一个基本功能

#include 
#include 

  这里,初始化列表可以在“{}”之前使用“=”,其效果与不带“=”的初始化相同。这样一来,自动变量和全局变量的初始化在c 中被
丰富了。程序员可以使用以下几种形式完成初始化的工作:

  1.等号“=”加上赋值表达式(assignment-expression),比如int a = 34 4;

  2.等号“=”加上花括号,比如int a = {34 4};

  3.圆括号,int a (34 4);

  4.花括号 ,int a  {34 4};

 

  后面两种形式可以用于获取堆内存new操作符中,

int* i = new int(1);
double* d = new double{1.2f};

 

  标准模板库容器对初始化列表的支持源自这个头文件中initializer_list类模板的支持,程序员只要包含了这个头文件,并且声明一个以initializer_list模板类为

参数的构造函数,同样可以使得自定义的类使用列表初始化

#include 
#include 
#include 
#include 
#include 
using namespace std;
enum gender{boy,girl};
class people
{
public:
    people( initializer_list< pair > l )//initializer_list 的构造函数
    {
        auto i = l.begin();
        for (; i != l.end();   i){
            data.push_back(*i);
        }
    }
    vector> data;
};
int main(int argc, char *argv[])
{
    qcoreapplication a(argc, argv);
    int i = 0 ;
    string temp;
    people ship2012 = {{"garfield", boy}, {"hellokitty", girl}};
    vector>::iterator iter = ship2012.data.begin();
    for ( ; iter != ship2012.data.end();    iter ){
        i  ;
        temp = (*iter).first;
        cout << temp << endl;
    }
    return a.exec();
}
网站地图