例如,我可以将数组硬编码为参数:
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;
}
Run Code Online (Sandbox Code Playgroud)
所以我不需要创建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);
}
}
Run Code Online (Sandbox Code Playgroud)
?
因为C++ 11 在帮助下引入了列表初始化std::initializer_list(不要与构造函数初始化列表混淆),所以你确实可以使用a std::vector(已被修改为有构造函数接受std::initializer_list)并且你可以简单地做
test({{"a",1), {"b",2}});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
391 次 |
| 最近记录: |