Visual Studio 2010中C++的四大變化(1)

發表于:2010-03-26來源:作者:點擊數: 標簽:StudioVisualvisualstudio
Visual Studio 2010中C++的四大變化(1) 軟件測試 微軟即將在2010年4月12日發布Visual Studio 2010的正式版,對于C++語言做了修改,使之更加符合C++標準,文章將對C++語言的修改來做一下分析。 在微軟即將發布的 Visual Studio 2010 正式版中,其對C++語言做

       Visual Studio 2010中C++的四大變化(1)   軟件測試

             微軟即將在2010年4月12日發布Visual Studio 2010的正式版,對于C++語言做了修改,使之更加符合C++標準,文章將對C++語言的修改來做一下分析。

    在微軟即將發布的Visual Studio 2010正式版中,其對C++語言做了一些修改,之前51cto也報道過Visual Studio 2010中關于C++項目的升級問題,文章則針對C++語言上的一些變化。

    Lambda表達式

    很多編程編程語言都支持匿名函數(anonymous function)。所謂匿名函數,就是這個函數只有函數體,而沒有函數名。Lambda表達式就是實現匿名函數的一種編程技巧,它為編寫匿名函數提供了簡明的函數式的句法。同樣是Visual Studio中的開發語言,Visual Basic和Visual C#早就實現了對Lambda表達式的支持,終于Visual C++這次也不甘落后,在Visual Studio 2010中添加了對Lambda表達式的支持。

    Lambda表達式使得函數可以在使用的地方定義,并且可以在Lambda函數中使用Lambda函數之外的數據。這就為針對集合操作帶來了很大的便利。在作用上,Lambda表達式類似于函數指針和函數對象,Lambda表達式很好地兼顧了函數指針和函數對象的優點,卻沒有它們的缺點。相對于函數指針或是函數對象復雜的語法形式,Lambda表達式使用非常簡單的語法就可以實現同樣的功能,降低了Lambda表達式的學習難度,避免了使用復雜的函數對象或是函數指針所帶來的錯誤。我們可以看一個實際的例子:

    1. #include "stdafx.h"   
    2. #include <algorithm>   
    3. #include <iostream>   
    4. #include <ostream>   
    5. #include <vector>   
    6.  
    7. using namespace std;   
    8.  
    9. int _tmain(int argc, _TCHAR* argv[])   
    10. {   
    11. vector<int> v;   
    12. for (int i = 0; i < 10; ++i) {   
    13. v.push_back(i);   
    14. }   
    15.  for_each(v.begin(), v.end(), [] (int n) {   
    16. cout << n;   
    17. if (n % 2 == 0) {   
    18. cout << " even ";   
    19. } else {   
    20. cout << " odd ";   
    21. }   
    22. });   
    23. cout << endl;   
    24.  
    25. return 0;   
    26. }  
    27. #include "stdafx.h"  
    28. #include <algorithm> 
    29. #include <iostream> 
    30. #include <ostream> 
    31. #include <vector> 
    32.  
    33. using namespace std;  
    34.  
    35. int _tmain(int argc, _TCHAR* argv[])  
    36. {  
    37. vector<int> v;  
    38. for (int i = 0; i < 10; ++i) {  
    39. v.push_back(i);  
    40. }  
    41.  for_each(v.begin(), v.end(), [] (int n) {  
    42. cout << n;  
    43. if (n % 2 == 0) {  
    44. cout << " even ";  
    45. } else {  
    46. cout << " odd ";  
    47. }  
    48. });  
    49. cout << endl;  
    50.  
    51. return 0;  
    52. 原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97