看板 C_and_CPP 關於我們 聯絡資訊
想請教一些問題: 1. 下面程式碼當中的strcut CMP,是POD type嗎? 2. 建立(CMP){s}的時候,會複製一份字串嗎?還是只傳遞reference呢? 3. (CMP){s}是在compile-time建立?還是在run-time建立呢? 謝謝 // suffix array #include <string> #include <vector> #include <algorithm> struct CMP { std::string& s; bool operator()(const int& i, const int& j) { return s.substr(i) < s.substr(j); } }; int main() { std::string s = "hello world!"; std::vector<int> array(s.size()); for (int i=0; i<(int)s.size(); ++i) array[i] = i; std::sort(array.begin(), array.end(), (CMP){s}); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.225.132.97
applecool:union 就知道是否 POD, 缺乏 ctor,還有functor用法錯 04/04 21:17
DJWS:抱歉不是很懂你在說什麼,可以請你說的更詳細一點嗎? 04/04 22:41
applecool:我覺得編譯不會過 04/04 23:37
LPH66:原 PO 用的應該是 C++11 的語法 @@ 04/04 23:46
DJWS:我使用的是 MinGW GCC 4.6.2 在我電腦上編譯會過 04/05 08:31
DJWS:這段程式碼有哪些是 C++11 的語法? 我自己覺得都是 C++03 @@ 04/05 08:34
legnaleurc:member 有 std::string & 就不可能是 POD 04/05 08:54
DJWS:感謝樓上! 04/05 09:06
DJWS:我猜2.是傳reference 3.是run-time 應該沒有猜錯吧? 04/05 09:08
LPH66:我是看到 (CMP){s} 就是...有點不確定這是 11 還是 03 的 04/05 12:09
DJWS:我只知道 03 當中用 {} 初始化,叫做 aggregate initializer 04/05 12:43
DJWS:至於在 {} 左邊加上(CMP)這語法 我不知道這個叫做什麼... 04/05 12:44
DJWS:然後 11 當中用 {} 初始化,叫做 initializer list,功能更強 04/05 12:45
loveme00835:你完全搞混了... 04/05 16:20
DJWS:那麼什麼是正確的呢? 04/05 19:38