既にコメントで分かったように、「一つの大きな文字列としてスキャンは、」C++に移動するための方法ではありません。
C++での典型的な
線形検索のために十分な速さで、通常はCスタイルの配列を使用して
auto myStr = "result";
auto it = std::find_if(std::begin(arr), std::end(arr),
[myStr](const char* const str) { return std::strcmp(mystr,str) == 0; });
は、その文字列が最初に間違った文字で、機能停止を比較覚えています。
よりC++スタイル:
std::vector<std::string> vec = { "res1", "res2", "res3" };
std::string myStr = "res2";
auto it = std::find(vec.begin(), vec.end(), myStr);
あなたが大規模なコンテナのための非常に高速のルックアップに興味がある場合は、std::unordered_set
が移動するための方法ですが、「スロット」は、その意味を失ったが、多分それでいケースstd::unordered_map
を使用できます。
std::unordered_set<std::string> s= { "res1", "res2", "res3" };
std::string myStr = "res2";
auto it = s.find(myStr);
すべてのコードを例として書かれ、
をテスト/コンパイルされていない、あなたは 'のstd :: vector'に精通していますか?データをメモリに順次格納することが保証されます。また、コードサンプルを提供してください。 – AndyG
もしあなたが大文字のように扱われるなら 'std :: string'を使わないのはなぜですか? – Hayt
'std :: sort'はあなたが持っているような配列でも動作します。 – Rakete1111