如何在向量中推动_back

How to push_back in a vector?

本文关键字:back 向量      更新时间:2023-10-16

我做了一个类,如下所示:

class Variable {
public:
  string name;
  double value;
};

用它来制作一个向量如下:

vector<Variable> var_table;

然后,我制作了一个函数iS_declaund以检查给定的字符串名称是否已经存在var_table,并使另一个函数定义了一个字符串的值,并在var_table中将一个新变量的名称和值置于var_table中的名称和值,如下所示:

bool is_declared(string var) {
  for (int i = 0; i < var_table.size(); ++i)
    if (var_table[i].name == var)
      return true;
  return false;
}
double define_name(string var, double val) {
  if (is_declared(var))
    cerr << var << "declared twice";
  var_table.push_back(Variable{var, val});
  return val;
}

在行中

var_table.push_back(Variable{var,val});

它显示以下错误:

238预期的主要表达

请帮助!

您无法使用C 编译器以下C 级别的C 编译器使用初始化器语法。您必须使用Variable(var,val)使其可能工作,或使用较新的编译器编译代码。

小笔记 - 您是否考虑过使用set执行此任务?

第一件事是您需要在变量类中提供构造函数才能将值实例化。

和接下来,在线中,

var_table.push_back(Variable{var,val});

您可以写作,

var_table.push_back(Variable(var,val));