C++ 如何将运算符与优先级值关联?

C++ 如何将运算符与优先级值关联?,c++,algorithm,postfix-notation,C++,Algorithm,Postfix Notation,我想实施这个计划。为此,我必须实现一个存储操作员优先级的表,如下所示: 操作人员 优先事项 0 +, - 1. *, / 2. 由于编译时已知的键值对数量是固定的,因此不需要std::unordered_映射的动态特性和开销。您可以使用一个简单的switch语句,它是静态的,很难出错: int get_priority(char const op) { switch (op) { case '(': return 0; case '+': case '-'

我想实施这个计划。为此,我必须实现一个存储操作员优先级的表,如下所示:

操作人员 优先事项 0 +, - 1. *, / 2.
由于编译时已知的键值对数量是固定的,因此不需要std::unordered_映射的动态特性和开销。您可以使用一个简单的switch语句,它是静态的,很难出错:

int get_priority(char const op) {
  switch (op) {
    case '(':
      return 0;
    case '+':
    case '-':
      return 1;
    case '*':
    case '/':
      return 2;
    default:
      return -1; // handle the error
  }
}

我如何比较优先级[]<优先级['+'],取决于您需要如何访问优先级。当然肯定不是优先级队列,除非你想不断地重建堆。我看不到与Dijkstra算法的联系。调车场算法确实与你的问题有关,而这与Dijkstras算法无关,对吧?RPN或PN的一个好处是,它们避免了操作员优先级的需要。添加操作员优先级对我来说似乎很奇怪。这对我来说很好。你能解释一下为什么这是一个比std::无序_图更好的答案吗?@OctavianNiculescu我试着添加一些解释。基本上,它是一个静态的、更简单/更受限的查找表,也更易于使用。