予約語を手動でセットに追加したくありません。
つまり、次のようなコードが必要ないということです。
reserved_word.insert("apple");
reserved_word.insert("orange");
reserved_word.insert("peach");
他のすべての前に実行する必要がある一部の初期化コードでは、代わりに次のことを行うことができます (C++11):
const std::set<std::string> reserved_word = {"apple", "orange", "peach"};
ただし、これは実行時に初期化を実行します。
事前にソートされた を単純に使用することもできますchar const *reserved_word[] = { ... }
。これにより、実行時の初期化の必要がまったくなくなります。ただし、ソース コードで正しく並べ替えを行ったほうがよいでしょう。そうしないと、並べ替えられたシーケンス検索アルゴリズムの 1 つを使用して単語を検索しようとすると、予期しない動作が発生します。
その上、セットのフルパワーは必要ありません
それがそれを避ける正当な理由だとは思いません。何かを避けるより良い理由は、禁止したいことが許可されている場合です。たとえば、実際に何かを追加したり削除したりしたくない場合は、const 以外のセットを使用することは最適なオプションではありません。ただし、代わりに const セットを使用できるため、セットを回避する必要はありません。