[問題] 利用 boost 的 Lambda 取代 C++0x:Lam …

看板C_and_CPP (C/C++)作者 (小乖)時間15年前 (2010/07/16 16:01), 編輯推噓3(3011)
留言14則, 4人參與, 最新討論串1/2 (看更多)
在網路看到一個範例 #include <iostream> #include <string> #include <algorithm> #include <vector> #include <iterator> using namespace std; int main(int argc, char** argv) { vector<string> v; v.push_back("What"); v.push_back("ever"); v.push_back("you"); v.push_back("want"); v.push_back("to"); v.push_back("be"); sort(v.begin(),v.end(), [](const string& left,const string& right){ return left.size() < right.size(); } ); } 這段 code 目前只能在 Visual Studio 2010 執行 我的環境是 Visual Stuio 2008 + boost Library 我想把這個 Lambda 的寫法用 boost 的 Lambda 替換 我很白癡的寫了這段 #include <iostream> #include <string> #include <algorithm> #include <vector> #include <iterator> #include <boost/lambda/lambda.hpp> #include <boost/tr1/functional.hpp> using namespace std; int main(int argc, char** argv) { vector<string> v; v.push_back("What"); v.push_back("ever"); v.push_back("you"); v.push_back("want"); v.push_back("to"); v.push_back("be"); sort(v.begin(),v.end(), _1 < _2); } 結果不 work , 請教一下版上的高手如何實現 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.216.172.246

07/16 16:45, , 1F
其實... less<string>() 就能辦到的說
07/16 16:45, 1F

07/16 16:49, , 2F
boost::lambda::_1 < boost::lambda::_2
07/16 16:49, 2F

07/16 16:58, , 3F
怎麼感覺前後版本的意思不太一樣? 囧
07/16 16:58, 3F

07/16 17:05, , 4F
哈哈 純粹只是想研究語法~ XD
07/16 17:05, 4F

07/16 17:08, , 5F
boost::lambda::_1 < boost::lambda::_2 這個方法結果
07/16 17:08, 5F

07/16 17:08, , 6F
不對,不是按照字串大小排列
07/16 17:08, 6F

07/16 17:26, , 7F
你需要 bind()
07/16 17:26, 7F

07/16 17:35, , 8F
除了自訂比較的函式以外, 似乎沒有更快的方法 0.0
07/16 17:35, 8F
※ 編輯: spider391 來自: 117.19.104.114 (07/16 19:16)

07/18 15:26, , 9F
C++新標準/規格越搞越花俏了... 花俏到可讀性越來越低
07/18 15:26, 9F

07/18 15:45, , 10F
可讀性比較高吧,lambda expression 一堆語言都有支援。
07/18 15:45, 10F

07/18 15:45, , 11F
[] 裡面用 & 和 = 的語意也符合直覺性。
07/18 15:45, 11F

07/18 15:46, , 12F
拿 boost 用 lib 的方式去搞反而比較難看懂。
07/18 15:46, 12F

07/18 15:55, , 13F
不知道各家編譯器對C++0x 的支援度是怎樣 0.0
07/18 15:55, 13F

07/19 10:05, , 14F
好想趕快用 lambda 的功能,很多 code 可以寫得更漂亮XD
07/19 10:05, 14F
文章代碼(AID): #1CG173q6 (C_and_CPP)
文章代碼(AID): #1CG173q6 (C_and_CPP)