C++初始化vector时出现编译错误的问题咨询
问题解决:vector列表初始化编译报错的原因与修复
报错原因
vector<int> v{2,3,4}是C11引入的列表初始化语法,而你的g编译器默认采用C++03或更早的编译标准,这类旧标准不支持该语法,因此编译器将其识别为语法错误,抛出expected ';' at end of declaration提示。
修复方案
编译时显式指定C++11及以上版本的标准,修改编译命令如下:
g++ file.cpp -o file -std=c++11
也可以选择更高版本的标准,比如-std=c++14或-std=c++17,效果一致。
补充说明
你用push_back能正常运行,是因为这个成员函数在C03标准中就已存在,不需要依赖C11的新特性,因此旧编译器可以正常处理。
内容的提问来源于stack exchange,提问作者Harsh
相关产品推荐
相关产品推荐

