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

C++ vectors (instead of arrays)

本文关键字:数组 向量 c++      更新时间:2023-10-16

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

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方法被修改为一个向量,并返回真或假。

#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 ) );
}