C++ 错误:对';的调用没有匹配函数;开始(长双点);使用硬编码int与整数变量初始化向量

C++ 错误:对';的调用没有匹配函数;开始(长双点);使用硬编码int与整数变量初始化向量,c++,std,C++,Std,我写了一个处理幻数的代码,现在我正试图将幻数放入变量中。从本质上讲,我创建一个具有固定数量元素的数组,填充数组,然后将其转换为向量。只要我将数组创建为: long double yy[5]; vector<long double> YY; YY.insert(YY.begin(), begin(yy), end(yy)); int nPoints = 5; long double yy[nPoints]; vector<long double> YY; YY.inser

我写了一个处理幻数的代码,现在我正试图将幻数放入变量中。从本质上讲,我创建一个具有固定数量元素的数组,填充数组,然后将其转换为向量。只要我将数组创建为:

long double yy[5];
vector<long double> YY;
YY.insert(YY.begin(), begin(yy), end(yy));
int nPoints = 5;
long double yy[nPoints];
vector<long double> YY;
YY.insert(YY.begin(), begin(yy), end(yy));
长双yy[5];
向量YY;
插入(YY.begin(),begin(YY),end(YY));
但是,如果我将数组创建为:

long double yy[5];
vector<long double> YY;
YY.insert(YY.begin(), begin(yy), end(yy));
int nPoints = 5;
long double yy[nPoints];
vector<long double> YY;
YY.insert(YY.begin(), begin(yy), end(yy));
int nPoints=5;
长双yy[nPoints];
向量YY;
插入(YY.begin(),begin(YY),end(YY));
我曾尝试将npoint转换为其他数据类型,检查以确保它是我分配给它的数据类型,等等,但我没有任何运气

// non functional code
#include <iostream>
#include <vector>

using namespace std;

int main(){
    int nPoints = 5;

    // initialize an input vector
    vector<long double> xx = {1, 2, 3, 4, 5};

    // compute some function of xx in a loop
    long double yy[nPoints];
    for(int i = 0; i<=nPoints - 1; i++){
        yy[i] = 2*xx[i];
    }

    // convert yy from an array to a vector
    vector<long double> YY;
    YY.insert(YY.begin(), begin(yy), end(yy));

    for(int i = 0; i<=nPoints -1; i++){
        cout<<YY[i]<<endl;
    }
    return 0;
}
//非功能代码
#包括
#包括
使用名称空间std;
int main(){
int nPoints=5;
//初始化输入向量
向量xx={1,2,3,4,5};
//计算循环中xx的某些函数
长双yy[nPoints];
对于(int i=0;i decltype(u cont.end())
|     ^~~
c:\mingw\include\c++\9.1.0\bits\range\u access.h:68:5:注意:模板参数推导/替换失败:
testMain.cpp:20:41:注意:可变大小的数组类型“long double[nPoints]”不是有效的模板参数
20 | YY.插入(YY.begin(),begin(YY),end(YY));
|                                         ^
在c:\mingw\include\c++\9.1.0\string:54中包含的文件中,
从c:\mingw\include\c++\9.1.0\bits\locale\u classes.h:40,
从c:\mingw\include\c++\9.1.0\bits\ios\u base.h:41,
从c:\mingw\include\c++\9.1.0\ios:42,
从c:\mingw\include\c++\9.1.0\ostream:38,
从c:\mingw\include\c++\9.1.0\iostream:39,
来自testMain.cpp:1:
c:\mingw\include\c++\9.1.0\bits\range\u access.h:78:5:注意:候选:“模板decltype(\uu cont.end())std::end(const\u Container&)”
78 | end(const|u Container&|u cont)->decltype(|u cont.end())
|     ^~~
c:\mingw\include\c++\9.1.0\bits\range\u access.h:78:5:注意:模板参数推导/替换失败:
testMain.cpp:20:41:注意:可变大小的数组类型“long double[nPoints]”不是有效的模板参数
20 | YY.插入(YY.begin(),begin(YY),end(YY));
|                                         ^
在c:\mingw\include\c++\9.1.0\string:54中包含的文件中,
从c:\mingw\include\c++\9.1.0\bits\locale\u classes.h:40,
从c:\mingw\include\c++\9.1.0\bits\ios\u base.h:41,
从c:\mingw\include\c++\9.1.0\ios:42,
从c:\mingw\include\c++\9.1.0\ostream:38,
从c:\mingw\include\c++\9.1.0\iostream:39,
来自testMain.cpp:1:
c:\mingw\include\c++\9.1.0\bits\range\u access.h:97:5:注意:候选:“模板constexpr\u Tp*std::end(\u Tp(&)[\u Nm])”
97 |结束(_-Tp(&u-arr)[_-Nm])
|     ^~~
c:\mingw\include\c++\9.1.0\bits\range\u access.h:97:5:注意:模板参数推导/替换失败:
testMain.cpp:20:41:注意:可变大小的数组类型“long-long-int”不是有效的模板参数
20 | YY.插入(YY.begin(),begin(YY),end(YY));
|                                         ^
在c:\mingw\include\c++\9.1.0\string:54中包含的文件中,
从c:\mingw\include\c++\9.1.0\bits\locale\u classes.h:40,
从c:\mingw\include\c++\9.1.0\bits\ios\u base.h:41,
从c:\mingw\include\c++\9.1.0\ios:42,
从c:\mingw\include\c++\9.1.0\ostream:38,
从c:\mingw\include\c++\9.1.0\iostream:39,
来自testMain.cpp:1:
c:\mingw\include\c++\9.1.0\bits\range\u access.h:106:31:注:候选:“模板(Tp*std::end(std::valarray&)”
106 |模板_Tp*结束(valarray&);
|                               ^~~
c:\mingw\include\c++\9.1.0\bits\range\u access.h:106:31:注意:模板参数推导/替换失败:
testMain.cpp:20:41:注意:不匹配的类型“std::valarray”和“long double[nPoints]”
20 | YY.插入(YY.begin(),begin(YY),end(YY));
|                                         ^
在c:\mingw\include\c++\9.1.0\string:54中包含的文件中,
从c:\mingw\include\c++\9.1.0\bits\locale\u classes.h:40,
从c:\mingw\include\c++\9.1.0\bits\ios\u base.h:41,
从c:\mingw\include\c++\9.1.0\ios:42,
从c:\mingw\include\c++\9.1.0\ostream:38,
从c:\mingw\include\c++\9.1.0\iostream:39,
来自testMain.cpp:1:
c:\mingw\include\c++\9.1.0\bits\range\u access.h:107:37:注意:候选:“模板常量”\u Tp*std::end(常量std::valarray&)
107 |模板常数_Tp*结束(常数数组&);
|                                     ^~~
c:\mingw\include\c++\9.1.0\bits\range\u access.h:107:37:注意:模板参数推导/替换失败:
testMain.cpp:20:41:注意:不匹配的类型“const std::valarray”和“long double[nPoints]”
20 | YY.插入(YY.begin(),begin(YY),end(YY));
问题1 您缺少声明的头文件

不是标准C++。它是由一些编译器支持的扩展。

std::begin
不适用于VLAs。它只适用于标准数组——编译时已知大小的数组


假设您可以对运行时已知大小的数组使用
std::vector
,那么就不需要使用VLA

而不是

long double yy[nPoints];
使用

std::向量yy(nPoints);
问题1 您缺少声明的头文件

不是标准C++。它是由一些编译器支持的扩展。

std::begin
不适用于VLAs。它只适用于标准数组——编译时已知大小的数组


鉴于此
long double yy[nPoints];
long double yy[nPoints];
std::vector<long double> yy(nPoints);