C++给vector赋值时报错expected expression的问题如何解决
错误原因
你第15行使用的vector<int>大括号赋值语法属于C++11标准新增的初始化列表特性,如果编译时未开启C++11及更高版本的标准支持,编译器无法识别该语法,就会抛出expected expression错误。
解决方案
方案1:开启编译器C++11及以上标准支持(推荐)
无需修改代码,仅调整编译配置即可:
- GCC/Clang编译器:编译命令追加参数
-std=c++11,如需使用更新特性可替换为-std=c++14/-std=c++17/-std=c++20,示例命令:g++ test.cpp -o test -std=c++11 - Visual Studio编译器:进入项目属性→C/C→语言→C语言标准,选择ISO C++11及以上版本即可。
方案2:修改代码适配旧C++标准
如果无法开启新版标准支持,可以用两种写法替换原有14、15行代码:
- 逐个插入元素
vector<int> m_Lenght; m_Lenght.push_back(0); m_Lenght.push_back(31); m_Lenght.push_back(28); m_Lenght.push_back(31); m_Lenght.push_back(30); m_Lenght.push_back(31); m_Lenght.push_back(30); m_Lenght.push_back(31); m_Lenght.push_back(31); m_Lenght.push_back(30); m_Lenght.push_back(31); m_Lenght.push_back(30); m_Lenght.push_back(31); m_Lenght.push_back(31);
- 数组中转批量赋值
int month_len[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31}; vector<int> m_Lenght(month_len, month_len + sizeof(month_len)/sizeof(int));
内容的提问来源于stack exchange,提问作者Антон Ананьев
相关产品推荐
相关产品推荐

