C ++向量(而不是数组)

时间:2014-05-11 11:27:03

标签: c++ arrays vector

我正在写一个词法分析器,我将关键字和保留字存储在如下数组中:

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。

1 个答案:

答案 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 ) );
}