-2

transformSTL 関数を使用して、セット内のすべての文字列を小文字に変換しようとしています。しかし、C2664のエラーが発生しました。私のコードの何が問題なのだろうか?

set<string> mydoc;
mydoc.insert("ABCD");
transform(mydoc.begin(), mydoc.end(), mydoc.begin(), ::tolower);
copy(mydoc.begin(), mydoc.end(), output);
4

1 に答える 1

0
  1. std::stringに aを渡すことはできませんtolower
  2. C++11setイテレータはconst.

したがって、ソートされたコンテナーにすべての要素を再挿入して時間を無駄にする必要があるため、後で変更するのではなく、に挿入するときにおそらくtolowerそれぞれに適用する必要があります。stringset

于 2016-12-05T00:19:17.353 に答える