比方说,我将有一个std::string
形式的代数函数或表达式。函数或类构造函数都可以将此字符串作为参数。
void function( const std::string& function ) { /* ... */ }
class Foo {
explicit Foo( const std::string& function ) { /* ... */ }
};
然后假设我有一个函数将解析此字符串,然后将其转换为std::function
,其中我当前的函数签名如下:
template<typename Ret, typename... Args>
void parseStringFunc( const std::string& funcStr, std::function<Ret(Args...)>& func ) {
/*....*/
}
现在想到了这个问题,因为它与解析字符串有关。我有两种选择,我想知道哪一种是查找表的首选。
std::vector<char> operators { '+', '-', '*', '/', '=' }
std::string
:
std::string operators { "+-*/=" };
std::string numbers{ "0123456789" };
std::string letters{ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" };
我想知道哪种方法是上面查找表比较funcStr
中各个字符的首选,这些字符将被解析为std::function
。