2016-12-04 4 views
-2

Я пытаюсь использовать функцию STL transform, чтобы преобразовать все строки в наборе в нижний. Но у меня ошибка C2664. Интересно, что случилось с моим кодом?в наборе преобразование в нижний регистр C++ errorC2664

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

Не достаточно ли достаточно [тега информации] (http://stackoverflow.com/tags/c2664/info)? –

+0

1. Каков тип каждого итератора 'set ' относится к (что хранится в наборе)? 2. Что ожидает тип 'tolower'? – Pixelchemist

+0

@Pixelchemist 'ostream_iterator output (cout, "\ n");' итератор –

ответ

0
  1. Вы не можете передать std::string в tolower.
  2. Итератор C++ 11 set - const.

Таким образом, вы, вероятно, следует применять tolower каждому string при вставке его в set вместо того, чтобы изменить его позже, потому что вам придется тратить время на вставив каждый элемент в отсортированном контейнер.

Смежные вопросы