在构造函数中初始化数组或向量
Initialize array or vector in constructor
>假设包含正确的标头。
我有一个计算器各种函数的类。我有几个用于不同运算符类型(零、一元、二进制、三元)的结构。我想初始化结构的向量(或最好是数组),并为我的计算器支持的 w/e 填充元素。例如nul[]={{pi, "pi"}, {ans, "answers"}};
然后,My 程序将从输入中获取一个标记并搜索相应的运算符,返回该运算符的索引,然后调用正确的函数指针。我的问题是初始化构造器中的数组或向量。如果有人能向我展示这两种方式,我将不胜感激。谢谢。下面是我的类和未完成的构造函数。另外,如果您能为我找到更好的方法来编写计算器,我很想听听。
//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 中使用多行赋值或创建静态函数来初始化向量或原始数组。
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);
}
};
相关文章:
- 如何在向量数组中插入元素?
- 不同大小的向量数组的大小 cpp
- 很好的语法来获取对向量/数组数据的大小引用?
- 指向 c++ 中的向量数组并将其发送到函数的指针
- 初始化向量数组,其中每个向量的大小为 0
- 在这里,当我们比较 if(vc[i]==vc1[i]) 时,它是向量数组. 实际上比较的值是多少,
- 如何使用结构体的向量数组?
- C++:向量数组
- 在C++中通过引用传递向量数组
- 向量数组"Cannot access memory at address"
- 构造不同类型的C++向量数组
- 向量数组的均值和众数 - 如何对函数进行较小的改进
- C++:初始化(新)一个不同初始大小的向量数组
- 五个中三个最大参数的平均值,不使用排序算法或向量/数组
- 销毁C++中的向量数组
- 继承向量/数组/列表并更改其大小
- 如何输出属于向量数组的结构字符串
- 如何通过引用传递向量数组
- 在向量数组中获得前五个最大的结果
- 为什么"new vector<int>[5]"不创建向量数组?