gpt4 book ai didi

c++ - 在构造函数中初始化数组或 vector

转载 作者:太空狗 更新时间:2023-10-29 21:26:00 35 4
gpt4 key购买 nike

假设包含正确的 header 。

我有一个用于计算器各种功能的类。我有几个针对不同运算符类型(nullary、Unirary、Binary、Ternary)的结构。我想初始化结构的一个 vector (或者最好是一个数组),其中填充了我的计算器支持的元素。例如 nul[]={{pi, "pi"}, {ans, "ans"}}; 然后我的程序将从输入中获取一个标记并搜索适当的运算符,返回该运算符的索引,然后我将调用正确的函数指针。我的问题是在构造函数中初始化数组或 vector 。如果有人能向我展示这两种方式,我将不胜感激。谢谢你。下面是我的类和未完成的构造函数。另外,如果您能为我想出更好的方法来编写我的计算器,我很乐意听到。

//operator class
class Functions{
public:
Functions();
double pi(double x=0);
double answer(double& x);
double abs(double& x);
double pow(double& x);
double add(double& x, double &y) const;
double subtract(double& x, double& y) const;
double multiply(double& x, double& y)const;
double divide(double& x, double& y) const;
double max(double& x, double& y, double& z) const;
double volume(double& x, double& y, double& z) const;
void doc();
bool weird(double &x) const;
unsigned findop0(const string & name);
unsigned findop1(const string & name);
unsigned findop2(const string & name);
unsigned findop3(const string & name);
private:
struct Nul{
double (*nulf)(double & x);
string name;
};
struct Uni{
bool (*unif)( double & result, double x );
string name;
};
struct Bin{
bool (*binf)( double & result, double x, double y );
string name;
};
struct Tern{
bool (*terf)( double & result, double x, double y, double z );
string name;
};
static const unsigned NUL_ELEMENTS = 2;
static const unsigned UNI_ELEMENTS = 2;
static const unsigned BIN_ELEMENTS = 4;
static const unsigned TRI_ELEMENTS = 2;
vector<Nul> nul;
vector<Uni> uni;
vector<Bin> bin;
vector<Tern> tri;
};

Functions::Functions(){
nul
}

最佳答案

在 C++11 中,您可以在初始化列表中的一行中执行此操作。

struct C {
int a[20];
int* b;
std::vector<int> c;
std::array<int,20> d;
C() :
a({1,2,3}),
b(new int[20]{1,2,3}),
c({1,2,3}),
d(std::array<int, 20u>{1,2,3})
{}
};

在 C++03 中使用多行赋值或创建静态函数来初始化 vector 或原始数组。

struct C {
int a[20];
int* b;
std::vector<int> c;
C() :
b(new int[20]),
{
a[0] = 1; ...
b[0] = 1;
c.push_back(1);
}
};

关于c++ - 在构造函数中初始化数组或 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12848436/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com