Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么在这种c++;程序_C++_Arrays - Fatal编程技术网

C++ 为什么在这种c++;程序

C++ 为什么在这种c++;程序,c++,arrays,C++,Arrays,据说数组是在编译时分配的,那么大小必须是const,并且在编译时可用。 但以下示例也适用,为什么? #include <iostream> #include <vector> using namespace::std;

据说数组是在编译时分配的,那么大小必须是
const
,并且在编译时可用。
但以下示例也适用,为什么?

#include <iostream>                                  
#include <vector>                                                 
using namespace::std;                                             
int main()                                                       
{                                                    
    vector<int> ivec;                                               
    int k;                                                  
    while(cin>>k)                                              
        ivec.push_back(k);                                     
    int iarr[ivec.size()];                                           
    for (size_t k=0;k<ivec.size();k++)                                 
    {                                                             
        iarr[k]=ivec[k];                                               
        cout<<iarr[k]<<endl;                                   
    }                                                            
    return 0;                                                    
}   
#包括
#包括
使用namespace::std;
int main()
{                                                    
向量ivec;
int k;
而(cin>>k)
ivec.推回(k);
int iarr[ivec.size()];

对于(大小k=0;k用
-pedantic

大多数编译器支持通过

由于编译器扩展,代码可以工作,但是正如您所注意到的,代码不符合标准,因此不可移植。

使用
-pedantic

大多数编译器支持通过

由于编译器扩展,代码可以工作,但是正如您所指出的,代码不符合标准,因此不可移植。

显然您的假设不正确,是吗?显然您的假设不正确,是吗?是的,使用
-pedantic
它会失败。@flyingfoxlee:
-pedantic
禁用所有特定于编译器的和编译器源代码是按照C++标准所规定的严格规范。因此,如果您打算编写一个可移植代码,则总是使用<代码> -PoANDICTIC/<代码>编译。我希望这能回答您的Q。是的,用<代码> -PoaNodie<代码>失败。@ FLIN FXXLY:<代码> -PoANDICTIC/<代码>禁用所有编译器特定的编译器并编译源代码。由于C++标准的严格规定,所以如果你想编写一个便携代码,总是使用<代码> -PoaNodie<代码>编译。