我正在写一个词法分析器,我将关键字和保留字存储在如下数组中:
string keywords[20] = {
"and",
"or",
"while",
"not",
"if",
"read",
"write",
"set",
};
我发现我可以使用矢量:
vector<string> keyword_list;
keyword_list.clear();
keyword_list.push_back("and");
keyword_list.push_back("or");
keyword_list.push_back("not");
然而,在此我需要为矢量修改isKeyword方法并返回true或false。
答案 0 :(得分:0)
#include <algorithm>
//...
bool isKeyword( const std::string &s )
{
return ( std::find( keyword_list.begin(), keyword_list.end(), s ) != keyword_list.end() );
}
如果矢量将被排序,那么您可以使用标准算法std::binary_search
例如
#include <algorithm>
//...
bool isKeyword( const std::string &s )
{
return ( std::binary_search( keyword_list.begin(), keyword_list.end(), s ) );
}