C++0x³¢ÏÊ ÓÃlambda±í´ïʽģÄâRubyµÄ¹ý³Ì¶ÔÏó
¹ØÓÚC++0x
Ô¤¼ÆÓÚÃ÷Äêµ×ÍÆ³öµÄбê×¼C++0x£¬Ëä˵ÒѽӽüÊչٽ׶Σ¬È´ÈÔÓÐÈô¸ÉÓдý½ÓÄɵÄÐÂÌá°¸±»Ìá³ö¡£ÓÈÆäÖµµÃ¹Ø×¢µÄÊÇ£¬Óëlambda±í´ïʽÒÔ¼°¾Ö²¿º¯ÊýÏà¹ØµÄÌá°¸“Unified Function Syntax£¨Í³Ò»µÄº¯ÊýÓï·¨£©”£¬¾¡¹Ü²»Êܱê׼ίԱ»á´ý¼û£¨Á½Äê¼äÀú¾ËÄ´ÎÑÓ³Ù±í¾ö£¬Á½´Î²»Óèͨ¹ý£©£¬ÈÔÈ»“ÍçÇ¿µØ”ÍÆ³öÁËÆäµÚ7¸ö°æ±¾N2989£¬Ìá°¸×÷ÕßïÆ¶ø²»ÉáµÄ¾«ÉñʵÔÚÁîÈËÇÕÅå¡£
¹ØÓÚlambda±í´ïʽ
Êܺ¯ÊýÐͱà³Ì·ç¸ñµÄÓ°Ï죬һЩOOPΪÖ÷Ìâ˼ÏëµÄ¾²Ì¬ÓïÑÔ·×·×ÍÆ³öÁËlambdaÕâÒ»ÒÔ¶ÌСµÄÄäÃûº¯ÊýÎªÌØµãµÄÓïÑÔÉèÊ©£¬µäÐ͵ÄÈç΢ÈíµÄVB9ºÍC#3.0¡£Óë´ËÏà¶ÔÓ¦µÄÊÇ£¬Öڶද̬½Å±¾ÓïÑÔ£¨python, ruby, javascript£©ÔòÔç¾Í¾ß±¸ÁËÏàÓ¦µÄÓïÑÔÌØÐÔ£¬RubyµÄ¹ý³Ì¶ÔÏó±ãÊÇÆäÖÐÒ»Àý¡£ÕâÒ»´Î½èC++0xбê×¼µÄ¶«·ç£¬C++ÓïÑÔ²»¸ÊÈ˺óͬÑùÒýÈëÁËÕâÒ»¼¤¶¯ÈËÐĵÄÐÂÌØÐÔ£¬Îªº¯ÊýÐͱà³Ì·ç¸ñÔÚC++ÓïÑÔÄڵĽøÒ»²½Íƹã´òÏÂÁ˼áʵµÄ»ù´¡¡£
ÒÔÏÂÓÃC++0xÖеÄlambda±í´ïʽÀ´Ä£ÄâRubyµÄ¹ý³Ì¶ÔÏó¡£
Ruby´úÂë
class Array
def inject(n)
each { |value| n = yield(n, value) }
n
end
def sum
inject(0) { |n, value| n + value }
end
def product
inject(1) { |n, value| n * value }
end
def find
for i in 0...size
value = self[i]
return value if yield(value)
end
return nil
end
end
[ 1, 2, 3, 4, 5 ].sum # 15
[ 1, 2, 3, 4, 5 ].product # 120
[ 1, 2, 3, 4, 5 ].find {|v| v*v > 10 } # 4
ÓйØRubyµÄ¹ý³Ì¶ÔÏóÒÔ¼°Õâ¶ÎRuby´úÂëµÄ˵Ã÷£¬Çë²Î¿¼RubyÓïÑÔÖеķº»Øµ÷¼°ÆäÔÚC++ÓïÑÔÖеÄÄ£ÄâʵÏÖÒ»ÎÄ¡£
C++´úÂë
#include <array>
#include <functional>
//#include <numeric>
#include <algorithm>
#include <boost/assign.hpp>
#include <iostream>
using namespace std;
template<typename T>
struct Array : public vector<T>
{
template<typename _Iter>
Array(_Iter _First, _Iter _Last) : vector(_First, _Last) {}
T inject(T n, function<T(T,T)> f) const {
for_each(begin(), end(), [&](T value){n = f(n, value);});
return n;
Ïà¹ØÎĵµ£º
ϵͳ»·¾³£ºWindows 7
Èí¼þ»·¾³£ºVisual C++ 2008 SP1 +SQL Server 2005
±¾´ÎÄ¿µÄ£º±àдһ¸öº½¿Õ¹ÜÀíϵͳ
ÕâÊÇÊý¾Ý¿â¿Î³ÌÉè¼ÆµÄ³É¹û£¬ËäÈ»³É¼¨²»¼Ñ£¬µ«ÊÇ×÷ΪÎÒÓÃVC++ ÒÔÀ´±àдµÄ×î´ó³ÌÐò»¹ÊÇ´«µ½ÍøÉÏ£¬ÒÔ¹©²Î¿¼¡£ÓÃVC++ ×öÊý¾Ý¿âÉè¼Æ²¢²»ÈÝÒ×£¬µ«Ò²²»ÊDz»¿ÉÄÜ¡£ÒÔÏÂÊÇÎҵijÌÐò½çÃæ£¬ºóÃæ ......
1.¸ÅÂÛ
¡¡ÔËÐÐʱ¿âÊdzÌÐòÔÚÔËÐÐʱËùÐèÒªµÄ¿âÎļþ£¬Í¨³£ÔËÐÐʱ¿âÊÇÒÔLIB»òDLLÐÎʽÌṩµÄ¡£CÔËÐÐʱ¿âµ®ÉúÓÚ20ÊÀ¼Í70Äê´ú£¬µ±Ê±µÄ³ÌÐòÊÀ½ç»¹ºÜµ¥´¿£¬Ó¦ÓóÌÐò¶¼Êǵ¥Ï̵߳쬶àÈÎÎñ»ò¶àÏ̻߳úÖÆÔÚ´Ëʱ»¹ÊôÓÚйÛÄî¡£ËùÒÔÕâ¸öʱÆÚµÄCÔËÐÐʱ¿â¶¼Êǵ¥Ï̵߳ġ£
Ëæ×ŲÙ×÷ϵͳ¶àÏ̼߳¼ÊõµÄ·¢Õ¹£¬×î³õµÄCÔËÐÐʱ¿âÎÞ·¨Âú×ã³ÌÐòµÄÐèÇó£ ......
1.
ÒýÑÔ
¡¡¡¡C++
ÓïÑԵĴ´½¨³õÖÔÊÇ“a better C”
£¬µ«ÊÇÕâ²¢²»Òâζ×ÅC++
ÖÐÀàËÆC
ÓïÑÔµÄÈ«¾Ö±äÁ¿ºÍº¯ÊýËù²ÉÓõıàÒëºÍÁ¬½Ó·½Ê½ÓëC
ÓïÑÔÍêÈ«Ïàͬ¡£×÷ ΪһÖÖÓûÓëC
¼æÈݵÄÓïÑÔ£¬C++
±£ÁôÁËÒ»²¿·Ö¹ý³ÌʽÓïÑÔµÄÌØµã£¨±»ÊÀÈ˳ÆÎª“
²»³¹µ×µØÃæÏò¶ÔÏó”
£©£¬Òò¶øËü¿ÉÒÔ¶¨Òå²»ÊôÓÚ ......
¡¡¡¡1.¸ÅÊö
¡¡¡¡Ðí¶à³õѧÕß¶ÔC/C++ÓïÑÔÖеÄvoid¼°voidÖ¸ÕëÀàÐͲ»ÉõÀí½â£¬Òò´ËÔÚʹÓÃÉϳöÏÖÁËһЩ´íÎó¡£±¾ÎĽ«¶Ôvoid¹Ø¼ü×ÖµÄÉî¿Ìº¬Òå½øÐнâ˵£¬²¢ÏêÊövoid¼°voidÖ¸ÕëÀàÐ͵ÄʹÓ÷½·¨Óë¼¼ÇÉ¡£
¡¡¡¡2.voidµÄº¬Òå
¡¡¡¡voidµÄ×ÖÃæÒâ˼ÊÇ“ÎÞÀàÐÍ”£¬void *ÔòΪ“ÎÞÀàÐÍÖ¸Õ딣¬void *¿ÉÒÔÖ¸ÏòÈκÎÀàÐ͵ÄÊ ......
ÔÚÌÖÂÛÈ«¾Ö±äÁ¿Ö®Ç°ÎÒÃÇÏÈÒªÃ÷°×¼¸¸ö»ù±¾µÄ¸ÅÄ
1. ±àÒëµ¥Ôª(Ä£¿é)£º
ÔÚIDE¿ª·¢¹¤¾ß´óÐÐÆäµÀµÄ½ñÌ죬¶ÔÓÚ±àÒëµÄһЩ¸ÅÄîºÜ¶àÈËÒѾ²»ÔÙÇå³þÁË£¬ºÜ¶à³ÌÐòÔ±×îŵľÍÊÇ´¦ÀíÁ¬½Ó´íÎó(LINK ERROR), ÒòΪËü²»Ïñ±àÒë´íÎóÄÇÑù¿ÉÒÔ¸ø³öÄã³ÌÐò´íÎóµÄ¾ßÌåλÖã¬Äã³£³£¶ÔÕâÖÖ´íÎó¸Ðµ½°ÃÄÕ£¬µ«ÊÇÈç¹ûÄ ......