是否有任何语法将矢量硬编码为参数?

时间:2015-08-07 06:48:30

标签: c++ syntax

例如,我可以将数组硬编码为参数:

void test(pair<string,int> v[],int size){
    for(int i=0;i<size;i++){
        printf("%s %d\n",v[i].first.c_str(),v[i].second);
    }
}

int main(){
    test((pair<string,int>[]){make_pair("a",1),make_pair("b",2)},2);
    return 0;
}

所以我不需要创建pair v []的临时变量,然后不需要担心temp变量的变量名,如果使用vector,是否有类似的语法:

void test(vector<pair<string,int> > v){
    for(pair<string,int> p : v){
        printf("%s %d\n",p.first.c_str(),p.second);
    }
}

1 个答案:

答案 0 :(得分:6)

因为C ++ 11在list initialization的帮助下引入了std::initializer_list(不要与constructor initializer lists混淆),你确实可以使用std::vector(已经已修改为constructor接受std::initializer_list),您只需执行

即可
test({{"a",1), {"b",2}});