C++;向量错误,显示变量是不明确的-我已经尝试了一切仍然没有希望 我用C++ ADT使用Eclipse月历 我已经将编译器设置为编译c++11和微处理器,并将项目设置的路径设置为c++11

C++;向量错误,显示变量是不明确的-我已经尝试了一切仍然没有希望 我用C++ ADT使用Eclipse月历 我已经将编译器设置为编译c++11和微处理器,并将项目设置的路径设置为c++11,c++,eclipse,c++11,vector,C++,Eclipse,C++11,Vector,我正在尝试创建一个简单的向量,我发现一个bug显示: a2' is ambiguous ' Candidates are: vector(unsigned int, const std::allocator<double> &) vector(unsigned int, const double &, const std::allocator<double> &) ' #include<iostream> #include<

我正在尝试创建一个简单的向量,我发现一个bug显示:

a2' is ambiguous '
Candidates are:
 vector(unsigned int, const std::allocator<double> &)
 vector(unsigned int, const double &, const std::allocator<double> &)
'
#include<iostream>
#include<vector>
#include<array>

int main(){
    using namespace std;
    double a1[4] = {1.2,2.4,3.6,4.8};
    vector<double> a2(3);

    array<double,5> a3;

}
a2'不明确'
候选人包括:
向量(无符号整数,常量std::分配器&)
向量(无符号整数、常量双精度&、常量标准::分配器&)
'
我写的代码是:

a2' is ambiguous '
Candidates are:
 vector(unsigned int, const std::allocator<double> &)
 vector(unsigned int, const double &, const std::allocator<double> &)
'
#include<iostream>
#include<vector>
#include<array>

int main(){
    using namespace std;
    double a1[4] = {1.2,2.4,3.6,4.8};
    vector<double> a2(3);

    array<double,5> a3;

}
#包括
#包括
#包括
int main(){
使用名称空间std;
双a1[4]={1.2,2.4,3.6,4.8};
载体a2(3);
阵列a3;
}
阵列工作正常,但向量出现错误。
任何帮助都将不胜感激。

忽略
double a1={1.2,2.4,3.6,4.8},

向量a2(3)中编译器正试图找出要调用的构造函数,实现中有两个候选构造函数:

向量(无符号整数,常量std::分配器&) 向量(无符号整数、常量双精度&、常量标准::分配器&)
你只是想预留空间吗

vector<double> a2{};
a2.reserve(3);
向量a2{};
a2.储备(3);
还是用3个元素初始化

vector<double> a2{ 1.0, 2.0, 3.0 };
向量a2{1.0,2.0,3.0};

根据我从您的问题中收集到的信息,您希望创建一个包含3个默认初始化的双元素的向量

在使用标准库时,这是一个好主意,以适应像这样的文档。如果我们查看文档,我们可以看到我们想要的构造函数具有以下签名:

explicit vector( size_type count );
因此,我们可以采取以下措施来实现您的目标():

我们可以使用以下代码(以下代码)来显示此功能:

我们可以按如下方式使用它():

#包括
int main()
{
std::vector ourVec={1.2,-1.9,0.1,0.0}
}

你的意思是
双a1[]={1.2,2.4,3.6,4.8}
?不,它是向量a1(4)={1.5,1.6,1.8,1.9};这不是你在问题中写的吗?目前,您正试图将初始值设定项列表分配给类型为
double
的变量,但给出的错误完全不同。此外,如果上述错误已修复,则无法复制:我想创建一个具有4个元素的double类型的向量数组,以便稍后在程序中分配值,如:a2[0]=1.4;a2[1]=1.5;a2[2]=1.6@krishnamraju
double a1[]={1.2,2.4,3.6,4.8}只需在代码中添加括号就可以了。您的代码正在运行,谢谢您让它变得非常清晰
explicit vector( size_type count, 
                 const T& value = T(),
                 const Allocator& alloc = Allocator());
#include <vector>

int main()
{
    std::vector<double> ourVec( 3U, 0.0 ); // Will result in {0.0, 0.0, 0.0}
}
vector( std::initializer_list<T> init, 
        const Allocator& alloc = Allocator() );
#include <vector>
int main() 
{
    std::vector<double> ourVec = {1.2, -1.9, 0.1, 0.0} 
}