2016-12-04 40 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.「集合」中每個迭代器的類型是指什麼(存儲在集合中)? 2.「tolower」所期望的類型是什麼? – Pixelchemist

+0

@Pixelchemist'ostream_iterator output(cout,「\ n」);'是迭代器 –

回答

0
  1. 你不能傳遞到std::stringtolower
  2. C++ 11 set迭代器是const

因此,插入它時,到set,而不是事後改變它,因爲你必須通過每一個元素重新插入排序容器浪費時間你應該申請tolower每個string