如何在向量中push_back?

时间:2016-12-06 10:13:43

标签: c++ vector compiler-errors

我按如下方式上课:

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

用它来制作一个矢量,如下所示:

vector<Variable> var_table;

然后我创建了一个函数is_declared来检查给定的字符串名是否已经存在var_table,并使另一个函数define_name将字符串的值和double放入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预期的初级表达在&#39; {&#39;令牌

请帮助!!!

2 个答案:

答案 0 :(得分:1)

您不能将C语言编译器的初始化语法用于低于C ++ 11的合规性级别。您必须使用Variable(var,val)使其可能正常工作,或使用较新的编译器编译代码。

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

答案 1 :(得分:-1)

首先,您需要在Variable类中提供一个构造函数,以将值实例化为变量。

接下来,在该行中,

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

你可以写为,

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