C++11 在C+中初始化向量时出现问题+;

C++11 在C+中初始化向量时出现问题+;,c++11,vector,C++11,Vector,我正在尝试以以下方式初始化visual studio中的向量: const vector <int> A {1,2,3,4,5}; const向量A{1,2,3,4,5}; 这给了我一个错误。错误显示: 错误C2470:'A':看起来像函数定义,但没有参数列表;跳过外观正文 有人能告诉我为什么我会犯这个错误吗 C++98不支持用于初始化向量的方法。。。 C++11中提供了对初始值设定项列表构造函数的支持 所以你可以使用下面的代码 int arr[] = {1,2,3,4,5};

我正在尝试以以下方式初始化visual studio中的向量:

const vector <int> A {1,2,3,4,5};
const向量A{1,2,3,4,5};
这给了我一个错误。错误显示:

错误C2470:'A':看起来像函数定义,但没有参数列表;跳过外观正文


有人能告诉我为什么我会犯这个错误吗

C++98不支持用于初始化向量的方法。。。 C++11中提供了对初始值设定项列表构造函数的支持

所以你可以使用下面的代码

int arr[] = {1,2,3,4,5};
vector<int> A(arr, arr+sizeof(arr)/sizeof(arr[0]));
intarr[]={1,2,3,4,5};
向量A(arr,arr+sizeof(arr)/sizeof(arr[0]);

正如我提到的,VS2012不支持初始值设定项列表,因此我们得到了编译错误。您可以使用以下方法获得几乎相同的结果

#include<vector>
#include <iterator>
#include<iostream>
using namespace std;

int main() {

    int arr[] = {1,2,3,4,5};
    const std::vector <int> A(std::begin(arr), std::end(arr));
    for(const auto& i: A)
        std::cout<<i<<std::endl;
    }
#包括
#包括
#包括
使用名称空间std;
int main(){
int arr[]={1,2,3,4,5};
常量std::向量A(std::begin(arr),std::end(arr));
用于(常数自动和i:A)

std::coutWhich compiler version?我使用的是visual studio 2012till VS2012,不支持初始化器列表,因此您会遇到此编译错误。因此,在执行此操作时,vectorA(std::begin(arr),std::end(arr)),它基本上是用数组“arr”中的所有值从头到尾初始化向量A?@psj01:是的,这是正确的。这是使用C++11标准中引入的全局begin()和end()函数进行初始化。这种方法的优点是它适用于默认数组(如本例所示)以及所有提供的标准容器。