矢量c++98错误
Vector c++ 98 error
所以我读了很多(最近)c++书,学习了向量,他们都告诉我要定义这样的向量:
vector<int> v1 = {4 ,3 ,5};
然而,当我编译它时(我在代码块中使用gnu-gcc编译器),它会出现以下错误
在c++98中,"v1"必须由构造函数初始化,而不是由"{…}"初始化我还得到了另一个下面写着:无法将"{4,3,5}"从"包含大括号的初始值设定项列表"转换为"std::vector v1"
如果你能帮助我,我将不胜感激我确实包含了向量库
您使用的初始化称为initializer list
,它在c++11以后受到支持。
要确保代码已编译,请使用C++11
或更高版本的-std
选项。或者一般情况下,不要使用C++98
。
如果你正在使用g++,请阅读:用g++编译C++11
来自注释OP正在使用代码块。在点击编译按钮之前,您可以使用以下步骤:(来源:How can I add C++11 support to Code::Blocks compiler?)
- 转到工具栏->设置->编译器
- 在"选定编译器"下拉菜单中,确保选择"GNU GCC编译器"
- 在下面,选择"编译器设置"选项卡,然后选择下面的"编译器标志"选项卡
- 在下面的列表中,确保选中"让g++遵循C++11 ISO C++语言标准[-std=C++11]"框
- 单击"确定"保存
C++98标准不支持初始化器列表来初始化标准容器。
尝试设置适当的编译器选项,以便根据C++2011标准编译代码。
另一种方法是像一样单独向矢量添加元素
std::vector<int> v1;
v1.reserve( 3 );
v1.push_back( 4 );
v1.push_back( 3 );
v1.push_back( 5 );
您可以使用重载运算符+=
来代替成员函数push_back
。例如
std::vector<int> v1;
v1.reserve( 3 );
v1 += 4;
v1 += 3;
v1 += 5;
或者使用类似的阵列
const size_t N = 3;
int a[N] = { 4, 3, 5 };
std::vector<int> v1( a, a + N );
在makefile的行末尾使用-std=c++11编译器选项进行编译。
例如:
g++ -ggdb -O0 -c ENiX_Chocky.cpp -std=c++11
g++ -ggdb -O0 -c ENiX_NLPTest.cpp -std=c++11
...
然后当你链接时,再次使用-std=c++11选项:
g++ -ggdb -O0 ENiX_Chocky.cpp ENiX_NLPTest.cpp -o CLINLPTest.cpp -std=c++11
错误将立即消失。
如果使用代码块,请执行以下步骤:
1.转到工具栏->设置->编译器
2.在"选定编译器"下拉菜单中,确保选择了"GNU GCC编译器"。
3.在下面,选择"编译器设置"选项卡,然后选择下面的"编译器标志"选项卡。
4.在下面的列表中,确保选中"让g++遵循C++11 ISO C++语言标准[-std=C++11]"框。
5.单击"确定"保存
Intalizer_list仅在c++11及以后版本上受支持。
编译你的程序如下:
- 如果您使用的是c++11功能,请遵循
-std=c++11
选项 - 如果您使用的是c++14功能,请遵循
-std=c++14
选项
例如:
gcc Temp.cpp -std=c++11 -o out_put
gcc Temp.cpp -std=c++14 -o out_put
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 作为参数模板的模板类:MSVC 错误 - 错误 C2977:模板参数过多 (C++98)
- 我正在使用dev c ++,但收到错误(C++98'array'必须由构造函数初始化)
- 致命错误:unordered_map:没有这样的文件或目录(C++ 98,gcc 4.8.5,使用 CMAKE)
- 使用固定宽度整数时,C 98 pedtical错误
- C 98/C 03 STL设置错误
- -O1/2/3 与 -std=c++1y/11/98 - 如果包含,<cmath>我收到错误:"_hypot"未在此范围内声明
- 绑定错误 98 "Address in use"应用程序终止后仍然存在
- 矢量c++98错误