Есть ли способ сократить это время?

while (temp->left->oper == '+' || 
       temp->left->oper == '-' || 
       temp->left->oper == '*' || 
       temp->left->oper == '/' || 
       temp->right->oper == '+' || 
       temp->right->oper == '-' || 
       temp->right->oper == '*' || 
       temp->right->oper == '/') {
    // do something
}

Для ясности: temp является указателем, который указывает на эту структуру:

struct node
{
    int num;
    char oper;
    node* left;
    node* right;
};
50
задан JeJo 22 July 2019 в 23:19
поделиться

1 ответ

Помещение операторов в unordered_set будет эффективной партией и обеспечит O (1) доступ к операторам.

unordered_set<char> u_set;                                                                                                                                                   
u_set.insert('+');                                                                                                                                                           
u_set.insert('*');                                                                                                                                                           
u_set.insert('/');                                                                                                                                                           
u_set.insert('-');                                                                                                                                                           


if((u_set.find(temp->left->oper) != u_set.end()) || (u_set.find(temp->right->oper) != u_set.end())) {     
                 //do something                                                                                                                
}
2
ответ дан 7 November 2019 в 10:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: