[問題] struct 當中的 reference type

看板C_and_CPP (C/C++)作者 (...)時間13年前 (2013/04/04 19:56), 編輯推噓2(2015)
留言17則, 5人參與, 最新討論串1/1
想請教一些問題: 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

04/04 21:17, , 1F
union 就知道是否 POD, 缺乏 ctor,還有functor用法錯
04/04 21:17, 1F

04/04 22:41, , 2F
抱歉不是很懂你在說什麼,可以請你說的更詳細一點嗎?
04/04 22:41, 2F

04/04 23:37, , 3F
我覺得編譯不會過
04/04 23:37, 3F

04/04 23:46, , 4F
原 PO 用的應該是 C++11 的語法 @@
04/04 23:46, 4F

04/05 08:31, , 5F
我使用的是 MinGW GCC 4.6.2 在我電腦上編譯會過
04/05 08:31, 5F

04/05 08:34, , 6F
這段程式碼有哪些是 C++11 的語法? 我自己覺得都是 C++03 @@
04/05 08:34, 6F

04/05 08:54, , 8F
member 有 std::string & 就不可能是 POD
04/05 08:54, 8F

04/05 09:06, , 9F
感謝樓上!
04/05 09:06, 9F

04/05 09:08, , 10F
我猜2.是傳reference 3.是run-time 應該沒有猜錯吧?
04/05 09:08, 10F

04/05 12:09, , 11F
我是看到 (CMP){s} 就是...有點不確定這是 11 還是 03 的
04/05 12:09, 11F

04/05 12:43, , 12F
我只知道 03 當中用 {} 初始化,叫做 aggregate initializer
04/05 12:43, 12F

04/05 12:44, , 13F
至於在 {} 左邊加上(CMP)這語法 我不知道這個叫做什麼...
04/05 12:44, 13F

04/05 12:45, , 14F
然後 11 當中用 {} 初始化,叫做 initializer list,功能更強
04/05 12:45, 14F

04/05 12:45, , 15F

04/05 16:20, , 16F
你完全搞混了...
04/05 16:20, 16F

04/05 19:38, , 17F
那麼什麼是正確的呢?
04/05 19:38, 17F
文章代碼(AID): #1HNMfKuv (C_and_CPP)
文章代碼(AID): #1HNMfKuv (C_and_CPP)