c++ 错误:< int>无法使用初始化器列表初始化非聚合类型“vector”,如何解决?

daupos2t  于 10个月前  发布在  其他
关注(0)|答案(4)|浏览(189)

我写了下面的代码,其中我已经初始化的向量与沿着与声明的向量。就像数组,但它抛出以下错误:-
密码是:-

# include <iostream>
# include <vector>

using namespace std;

int main()
{
    vector <int> v  = {1,2,3,4,5};
    vector <int> :: iterator it ;
    it = v.begin();

    cout<< (*it) <<endl;
    return 0;
}

字符串
我收到的输出IIN实际上是:-

apple@Apples-MacBook-Air Iterators % cd "/Users/apple/Desktop/CODE/Iterators/" && g++ iteratorsBasics.cpp -o iterat
orsBasics && "/Users/apple/Desktop/CODE/Iterators/"iteratorsBasics
iteratorsBasics.cpp:8:18: error: non-aggregate type 'vector<int>' cannot be initialized with an initializer list
    vector <int> v  = {1,2,3,4,5};
                 ^    ~~~~~~~~~~~
1 error generated.
apple@Apples-MacBook-Air Iterators %


作为初学者,我不知道如何解决这个问题,请帮助。
我通过在互联网上看到一些视频在终端检查的c++版本如下:

Apple clang version 13.0.0 (clang-1300.0.29.30)
Target: arm64-apple-darwin21.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

8fsztsew

8fsztsew1#

您正在编译C98或C03标准版本。将标志-std=c++11(或更高版本:c++14/c++17/c++20)添加到编译器调用中,它应该可以编译。
在C++11之前,std::vector构造函数的std::initializer_liststd::initializer_list重载并不存在。

tkclm6bt

tkclm6bt2#

尝试使用以下编译器标志编译代码:

-std=c++11

字符串
所以命令:

g++ -std=c++11 your_file.cpp

r7knjye2

r7knjye23#

添加此

set(CMAKE_CXX_FLAGS "-std=c++11")

字符串
如果你使用CMake,

jgzswidk

jgzswidk4#

1.转到代码运行器扩展设置,然后向下滚动,直到看到此执行器Map。
1.按cmd+f然后搜索代码运行器。executorMap make changes at highlighted place only
1.然后在cpp下,在g之后写**-std=c17**,如ss中所示。
1.保存它,然后运行你的程序。

相关问题