Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 27 kết quả

Đề tài: Bắt đầu tự học C++0x với Cộng Đồng C Việt

  1. #1
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Mặc định Bắt đầu tự học C++0x với Cộng Đồng C Việt

    Bài viết được soạn thảo, edit, các code mẫu, các ví dụ đưa ra đều được viết bởi langman 100%.
    Bài viết có nguồn từ cộng đồng c việt, tất cả các sự mang mác đi các 4rum khác đều ok, nhưng xin các bạn ghi rõ nguồn langman-congdongcviet nhé. Cám ơn tất cả các bạn


    Các bạn có thể học với Visual Studio 2010 hoặc DEV-C phiên bản mới nhất hoặc các IDE khác có hỗ trợ C++0x mà bạn biết.
    trong VS2008 thì ta phải sử dụng namespace tr1 ( C++ Technical Report 1 libraries )
    Các code mẫu đều soản thảo, biên dịch, kiểm thử trên Visual Studio 2010 nên sự lựa chọn tốt nhất là VS2010 download tại đây : http://forums.congdongcviet.com/showthread.php?t=5521

    I. Cái tên

    Lần đầu tiên nghe cái tên C++0x chắc hẳn các bạn ai cũng cảm thấy lạ lẫm và ngỡ ngàng, lúc đầu langman còn cứ nghĩ là đây là 1 ngôn ngữ mới, hôm nay rảnh rảnh quyết định tìm hiểu mới phát hiện ra nhiều điều

    Đây là 1 chuẩn mới của C++, cũng như C90, C99 mà ta vẫn nghe vậy

    Phiên bản trước, của năm ngoái,2009, C++ cũng ra 1 chuẩn mới với cái tên
    C++ 09

    Và năm nay, 2010, chuẩn ra sẽ có tên là C++10 và số 10 được viết theo kí tự la mã nên đơn giản nó là X

    Thêm vào đó, stand thường được viết bởi 2 kí tự nên đơn giản nó là C++0x

    Nó là 1 chuẩn mới của C năm 2010 chứ ko phải là 1 ngôn ngữ mới!


    II. Từ khóa auto


    Ví dụ 1:

    PHP Code:
    #include <iostream>
    using namespace std;


    auto ham(double x)->double{return sqrt(x);}
    class 
    hocsinh
    {
    private:
        
    int a;
        
    int b;
    public:
        
    hocsinh():a(2),b(3){}
    };
    void main()
    {
        
    hocsinh cukhoai;
        
    auto a=ham(5.),b=1.//double
        
    auto c=new double,d=new double[10]; //double *
        
    auto x=1//int
        
    auto y=2.0// double
        
    auto z=10ULL//unsigned long long
        
    auto s=ham// con trỏ hàm dạng double (__cdecl *)(double)
        
    auto h=cukhoai//hocsinh
        
    auto g=hocsinh(); //hocsinh
        
    auto u=new hocsinh[100]; //hocsinh*
        
    auto v='a';

        
    cout<<a<<endl;
        
    system("pause");


    Kiểu dữ liệu tự động có thể được tạo bởi từ khóa auto , và kiểu dữ liệu sẽ được lấy từ việc khởi tạo hoặc của biểu thức khởi tạo (ví dụ 1)
    Trong ví dụ 1, a có kiểu dữ liệu là double, x có kiểu dữ liệu là int ,v có kiểu dữ liệu là char và z có kiểu dữ liệu là unsigned long long.....

    Chú ý quan trọng : biến auto khi đăng kí bắt buộc phải khởi tạo giá trị, nếu ko sẽ báo lỗi
    Ví dụ
    PHP Code:
    auto a;// báo lỗi vì ko có khởi tạo 

    Từ khóa auto cũng có thể dùng cho hàm :
    + là kiểu dữ liệu trả về là auto, syntax như sau : hàm sẽ trả về kiểu dữ liệu sau dấu ->
    Ví dụ 2
    PHP Code:
    #include <iostream>
    using namespace std;

    auto ham(int x)->int {return x*2;}

    void main()
    {
        
    cout<<ham(2)<<endl;

        
    system("pause");


    Chú ý :
    + Kiểu dữ liệu của tham số không thể là auto

    PHP Code:
    auto ham(auto x=2)… //sai vì tham số không thể là auto dù nó đã được khởi tạo là int 
    + auto cũng có thể chuyển được thành kiểu void
    PHP Code:
    auto ham(int x)->void {cout<<"chao ca nha";} 

    + có thể viết hàm nhiều nhiều dòng như sau
    PHP Code:
    auto ham(int x)->void 
    {
        
    cout<<"chao ca nha";

    III. Regular expressions


    Dẫn nhập
    Nói về biểu thức chính tắc (cũng có chỗ dịch là chính quy), ở đây chắc ko ít người trong chúng ta đều biết, nhưng có vài điều đáng chú ý trước khi langman trình bày về Regular expressions trong C++0x :
    + trong C thuần túy cũng có sự xuất hiện của Regular expressions, vài hôm trước langman đã đưa vấn đề này ra thảo luận tại đây: Hàm trong C: Bài tập nâng cao về hàm scanf và xâu nhưng nhận được ko nhiều sự quan tâm, điều đó nói nên rằng các bạn ko hề biết rằng trong C cũng có sự xuất hiện của Regular expressions. Trước khi xem biểu thức chính tắc trong C++0x các bạn nên xem bài đó trước để hiểu sơ sơ qua vấn đề
    + Biểu thức chính quy là gì ? Biểu thức chính quy (tiếng Anh: regular expression, viết tắt là regexp, regex hay regxp) là một chuỗi miêu tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định. Biểu thức chính quy thường được dùng trong các trình biên tập văn bản và các tiện ích tìm kiếm và xử lý văn bản dựa trên các mẫu được quy định. Nhiều ngôn ngữ lập trình cũng hỗ trợ biểu thức chính quy trong việc xử lý chuỗi, chẳng hạn như Perl có bộ máy mạnh mẽ để xử lý biểu thức chính quy được xây dựng trực tiếp trong cú pháp của chúng. Bộ các trình tiện ích (gồm trình biên tập sed và trình lọc grep) đi kèm các bản phân phối Unix có vai trò đầu tiên trong việc phổ biến khái niệm biểu thức chính quy.


    ví dụ như này : (tại mình lười code C++ quá code tạm ngôn ngữ khác nha, tuy nhiên ko khác nhau nhiều lắm đâu). các bạn chú ý đừng quan tâm vội xem nó viết như nào mà hãy nhìn xem về sự tiện lợi, ngắn gọn và đơn giản của nó.

    Giả sử có 1 trường tôi cần kiểm tra xem có phải là email ko :
    + có @ và .
    + trường id có ít nhất 6 kí tự
    + ko có dấu cách
    + các trường domain, host của trường này phải khác rỗng


    để làm 1 đoạn mã kiểm tra ko khó, langman lấy thử 1 đoạn mã của Adobe (hình như đọc là "a đốp" hơ hơ ) như này nhé
    PHP Code:
    <script type="text/JavaScript">
    <!--
    function 
    MM_findObj(nd) { //v4.01
      
    var p,i,x;  if(!dd=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
        
    d=parent.frames[n.substring(p+1)].documentn=n.substring(0,p);}
      if(!(
    x=d[n])&&d.allx=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
      for(
    i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
      if(!
    && d.getElementByIdx=d.getElementById(n); return x;
    }

    function 
    MM_validateForm() { //v4.0
      
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
      for (
    i=0i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
        if (
    val) { nm=val.name; if ((val=val.value)!="") {
          if (
    test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
            if (
    p<|| p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
          } else if (
    test!='R') { num parseFloat(val);
            if (
    isNaN(val)) errors+='- '+nm+' must contain a number.\n';
            if (
    test.indexOf('inRange') != -1) { p=test.indexOf(':');
              
    min=test.substring(8,p); max=test.substring(p+1);
              if (
    num<min || max<numerrors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
        } } } else if (
    test.charAt(0) == 'R'errors += '- '+nm+' is required.\n'; }
      } if (
    errorsalert('The following error(s) occurred:\n'+errors);
      
    document.MM_returnValue = (errors == '');
    }
    //-->
    </script> 
    và đơn giản hơn đây là hàm kiểm tra của mình
    Code:
    function kiemtraemail(x)
    {
    	return /^\w{6,}@\w+.\w+$/.test(x);
    }
    One more time : các bạn chú ý đừng quan tâm vội xem nó viết như nào mà hãy nhìn xem về sự tiện lợi, ngắn gọn và đơn giản của nó



    nào chúng ta bắt đầu với C++0x chứ nhỉ
    Các code chính , quan trọng mình sẽ viết full code
    các vấn đề mở rộng mình chỉ viết mỗi câu lệnh khai vào và khởi tạo biến re, bởi vì syntax của chương trình vẫn thế


    Chap 1 :
    Tôi sẽ mở đầu bằng 1 vấn đề sau :giả sử tôi muốn kiểm tra xem trong 1 xâu có từ "khoai" hay ko

    _ Theo bình thường chúng ta sẽ dùng hàm strstr để tìm rồi so sánh kết quả với lại 0 để đưa ra đúng sai:
    PHP Code:
    if(strstr(xau,"khoai")) printf("Co tu khoai trong xau"
    _ Còn đối với biểu thức chính quy chúng ta có cách như sau
    PHP Code:
    #include <iostream>
    #include <regex>    //include cái này vào nha
    using namespace std;

    void main()
    {
        
        
    regex re("khoai");   // khởi tạo 1 biến chính tắc để kiểm tra
        
    char xau[100]="toi thich an khoai mon";   // khởi tạo 1 xâu
        
    bool kq=regex_search(xau,re); // gọi hàm kiểm tra và lưu kết quả vào biến kq

        
    cout<<kq;  // viết ra giá trị của biến kết quả

        
    cin.get(); // dừng màn hình

    Kết luận 1 : Vậy ở mức đơn giản nhất, biểu thức chính tắc chỉ đơn giản là từ mà ta tìm kiếm, hàm kiểm tra sẽ trả về false nếu ko tìm thấy và true nếu tìm thấy, ở trong C++ thì false và true chính là 0 và 1


    Chap 2 :
    Bây giờ tôi muốn kiểm tra 1 chuỗi nhập vào có bắt đầu bằng từ "khoai" hay không thì làm thế nào nhỉ
    PHP Code:
    if ( (strstr(xau,"khoai")==xauprintf("Co"); 
    hoặc tôi sẽ làm như này
    PHP Code:
    #include <iostream>
    #include <regex>  
    using namespace std;

    void main()
    {
        
    regex re("^khoai");  
        
    char xau[100];  
        
    cin.get(xau,100);
        if (
    regex_search(xau,re)) cout<<"Co bat dau bang chu khoai"
        else 
    printf("Khong bat dau bang chu khoai");
        
    system("pause");

    nếu bạn nhập vào khoai tây, khoai lang, khoai sọ, khoai1..... cứ bắt đầu bằng từ khoai, còn lại tùy ý thì sẽ cho ra kết quả là 1, tức là đúng
    còn nếu bạn nhập vào các trường hợp khác, kể cả có từ khoai ở giữa hoặc cuối đều trả về 0 tức là sai, không đúng

    Kết luận 2 : Kí tự ^ quy định sự bắt đầu của trường . Cực kì chú ý ở đây kí tự ^ đứng đơn lẻ, ko có gì đằng trước nó cả


    Chap 3 : Kí tự \
    Điều xảy ra bây giờ phức tạp hơn 1 tí tí, tôi muốn kiểm tra trong chuỗi vừa nhập có kí tự \ hay ko thì tôi làm thế nào ?
    theo các bình thường, các bạn có thể dùng 1 trong 2 cách sau
    PHP Code:
    strstr(xau,"\\"); hoặc     strchr(xau,'\\'); 
    thế trong biểu thức chính quy ta làm thế nào ? đơn giản là như này thôi
    PHP Code:
    regex re("\\"); 
    kết luận 3 : kí tự \ dùng để biểu thị các kí tự đặc biệt, ví dụ như \n, \b .....
    A backslash escapes special characters to suppress their special meaning.


    Chú ý : Trong xâu cũng hoàn toàn có thể có kí tự \n
    Các bạn phải chú ý nâng cao kiến thức về xâu và nhập xâu như trong bài viết mình đã nói ở đầu phần biểu thức chính quy, qua đó các bạn sẽ hiểu là xâu trong C ko hoàn toàn bị giới hạn ở 1 dòng như chúng ta vẫn thường xuyên biết đến, chúng ta hoàn toàn có thể nhập 1 xâu có cả \n trong đó.



    Mở rộng thêm kiến thức về kí tự \ trong C : (hơi trườu tượng, và khó hiểu, các bạn có thể bỏ qua phần này đến phần chú ý 2):
    Có rất nhiều trường hợp với kí tự \ trong vấn đề này, các tài liệu hầu như đều đá sơ sơ qua, vậy chúng ta cùng nhau lập lên 1 thống kê về backslash nhé

    + \x?? biểu thị kí tự bởi mã
    \x?? trong chuỗi sẽ được hiểu là kí tự mà có mã hexadecimal là ??
    ví dụ trong 1 chuỗi \x61 sẽ được hiểu là a
    PHP Code:
    cout<<'\x61'<<"\x61"//sẽ in ra 2 chữ a 
    hoặc
    đoạn code sau sẽ kiểm tra xâu vừa nhập có chữ a hay ko
    PHP Code:
        regex re("\x61"); 
    + \? biểu thị chính các kí tự sau kí tự ?
    ví dụ \\ được ide hiểu là \
    \" được hiểu là "
    đối với xâu trong C/C++ các trong trường hợp thường là : \ " |


    + \? biểu thị có ý nghĩa đặc biệt
    ví dụ
    \n được hiểu là kí tự enter, xuống dòng

    Các trường hợp này bao gồm
    \n xuống dòng
    \r CR , bạn làm bài tập về file chắc là biết cái này rồi
    \t kí tự tab có độ rộng bằng 8 kí tự cách bình thường
    \b kí tự có ý nghĩa lùi 1 tí tự
    \a bell , cái này chắc các bạn học lập trình trên dos đều biết cả, hơ hơ
    \e esc trên bàn phím 0x1B
    \f form feed, cái này thì chắc các bạn đều biết rồi mã là 0x0C
    \v vertical tab mã là 0x0B
    \cA
    \cB
    \cC
    ...
    \cZ




    Chú ý 2 : đối với biểu thức chính tắc thì 1 số kí tự có ý nghĩa đặc biệt xác định, nên sẽ bao gồm thêm các trường cơ bản như
    + \? biểu thị chính các kí tự sau kí tự xẹp, bao gồm:
    [\^$.|?*+(){}
    vấn đề này rất nhạy cảm và khó khó nhai, nhưng nắm được mấu chốt này rồi thì vô cùng đơn giản, langman sẽ phân tích cụ thể qua ví dụ tại các chap tiếp

    + \? biểu thị các nội dung đặc biệt, sẽ học ở các chap kế tiếp

    \Q...\E : chú ý đây là 1 cặp vợ chồng xẹp hj hj hj.


    Chap 4 :
    bây giờ tôi muốn kiểm tra xem chuối nhập vào có cái đuôi là "@yahoo.com" hay ko thì tôi làm như thế nào ?
    trong C thì chúng ta làm như này
    PHP Code:
    if ((strstr(xau,"@yahoo.com")-strlen(xau)+strlen("@yahoo.com"))==xauprintf("Co"); 
    Nhưng thôi từ nay ta sẽ dùng cách này để kiểm tra cho nhanh,
    PHP Code:
    #include <iostream>
    #include <regex>  
    using namespace std;

    void main()  
    {  
        
    regex re("@yahoo.com$");    
        
    char xau[100];    
        
    cin.get(xau,100);  
        if (
    regex_search(xau,re)) cout<<"Co duoi la @yahoo.com do";
        else 
    cout<<"Khong co duoi la @yahoo.com";
        
    system("pause");

    trả về sai nếu bạn nhập là
    langman
    khoai tay
    mon an
    thit xao chua ngot
    .....
    trả về đúng nếu bạn nhập là
    abv@yahoo.com
    â a a a a @yahoo.com
    a b c d eaa..sad3ealwkjdasklhfsjh(*&^%$%@yahoo.com

    kết luận 4: kí tự $ dùng để xác định xem 1 chuỗi có kết thúc như ta mong muốn hay ko

    Mở rộng và kết hợp logic với vấn đề đã biết, để tạo nên các vấn đề hơn

    + Kiểm tra sự chính xác 100% của 1 trường :
    Ví dụ tôi muốn kiểm tra chuỗi password vừa nhập có phải là congdongcviet hay ko
    PHP Code:
    #include <iostream>
    #include <regex>  
    using namespace std;

    void main() 

        
    regex re("^congdongcviet$");   
        
    char xau[100];   
        
    cin.get(xau,100); 
        if (
    regex_search(xau,re)) cout<<"Nhap dung password roi";  
        else 
    cout<<"Nhap sai password roi";
        
    system("pause");

    chỉ đúng khi chuỗi nhập vào là "congdongcviet"
    còn lại thì sai hết. kể cả là "congdongcvietcongdongcviet"

    Kết luận 4-1 cực kì quan trọng: cặp đôi ^ và $ đi cùng nhau sẽ quyết định 1 cách toàn vẹn yếu tố của trường. Trong lập trình với biểu thức chính quy thì các biểu thức chính quy thường xuyên nằm trong cặp logic ^$.



    + Tôi muốn nhập vào 1 giá tiền, và kiểm tra có kí tự $ trong trường nhập vào hay ko thì làm thế nào?
    PHP Code:
    regex re("\\$"); 
    ở đây cái \\ sẽ được hiểu là \
    vậy biểu thức chính tắc của ta là \$
    vậy có nghĩa là kiểm tra xem trong chuỗi vừa nhập có kí tự $ ko

    vậy
    ...
    Vậy:
    + Tôi muốn kiểm tra xem chuỗi vừa nhập có kết thúc bằng kí tự \ ko thì làm thế nào nhi?
    PHP Code:
         regex re("\\\\$"); 
    hờ hờ hờ, ảo quá cơ

    + Kiểm tra xâu nhập vào có phải là rỗng hay ko
    PHP Code:
        regex re("^$"); 

    Chú ý : nểu biểu thức chính quy viết sai thì phép kiểm tra regex_search thường cho ra kết quả luôn đúng
    ví dụ
    regex re("$$");
    regex re("$");
    regex re("^^");
    regex re("^");
    .......




    Chap 6 :
    câu hỏi của icanfeel
    PHP Code:
    Đề bài là viết một hàm tên là censor thay thế "foo" trong string bằng "xxx"ví dụ như nếu string là "food fool"ta sẽ có "xxxd xxxl".

    Nếu dùng mảng string thì mình biết rồi nhưng mình muốn học cách dùng regular expression nên cho mình xin lời giải khác với
    PHP Code:
    #include <iostream>
    #include <regex>  
    using namespace std;

    void main() 

        
    regex re("foo");   
        
    std::string s="food food",xeng="xxx";   
        
    cout<<regex_replace(s,re,xeng);
        
    system("pause");

    demo khác :
    dùng regex chuẩn hóa xấu
    PHP Code:
    #include <iostream>
    #include <regex>
    using namespace std;

    void main()
    {
        
    string xau="  Bui      Tan      Quang     ";

        
    xau=regex_replace(xau,regex("[ ]{2,}"),string(" "));
        
    xau=regex_replace(xau,regex("^[ ]"),string(""));
        
    xau=regex_replace(xau,regex("[ ]$"),string(""));

        
    cout<<xau;
        
    system("pause");



    Quy tắc viết biểu thức regex y hệt như cách viết regex trong Java, thật là 1 công đôi ba việc phải không nào. khà khà




    V. Lambda Expressions


    Chap 1 : Cơ bản
    (nói nhỏ các bác là em đang sốt 39 độ)
    Mất cả nửa giờ đồng hồ bực mình với tratu, vdict mà chưa hề biết được ý nghĩa của lambda là gì ,bực mình bực mình bực mình..............

    chắc là lượng kiến thức hạn hẹp của mình, trách ai, chán quá

    nhưng thôi
    sau 1 hồi đọc đọc đọc, bạn ơi lambda là 1 cú pháp mới , rất rất hay trong C++0x
    he he he

    1. Dẫn nhập
    Đây là 1 ví dụ đơn giản,giả sử muốn cắt vector (int) làm 2 phần, với C++03
    stand (trên Visual C++ 2003 ) ta làm như này
    PHP Code:
    #include <algorithm>
    #include <iostream>
    #include <vector>
    using namespace std;

    class 
    test
    {
        
    int giatri;
    public:
        
    explicit test(int x)
        {
            
    giatri=x;
        }
        
    bool operator()(int n// đa năng hóa toán tử ()
        
    {
            if (
    n>giatri)
            {
                
    cout << <<" lon hon  "<< giatri <<endl;
                return 
    true;
            }
            else
                
    cout << << " nho hon " << giatri <<endl;
            return 
    false;
        }
    };

    void main()
    {
        
    vector<intv;
        for (
    int i 020; ++i)
        {
            
    v.push_back(i);
        }
        
    for_each(v.begin(), v.end(), test(9));
        
    system("pause");

    ở đây rõ ràng ta phải :
    + Tạo ra lớp test bao gồm : hàm tạo + đa năng hóa toán tử ()
    + Mình ko có quyền kiểm soát việc sử dụng lớp test, người khác sẽ dễ dàng sử dụng hoặc thay đổi bằng cách tạo 1 lớp dẫn xuất từ lớp test


    2.Lambda Expression

    với cú pháp/ngữ pháp/syntax lambda thì ta viết lại như sau:
    PHP Code:
    #include <algorithm>
    #include <iostream>
    #include <vector>
    using namespace std;



    void main()
    {
        
    vector<intv;
        for (
    int i 020; ++i)
        {
            
    v.push_back(i);
        }
        
    int giatri=5;
        
    for_each(v.begin(), v.end(), [giatri] (int n)->bool {     
            if (
    n>giatri)   // cái được truyền vào cho n ở đây chính là các phần tử của vector v bên trên
            
    {
                
    cout << <<" lon hon  "<< giatri <<endl;
                return 
    true;
            }
            else
                
    cout << << " nho hon " << giatri <<endl;
            return 
    false;
        });

        
    system("pause");

    ồ, thật là cool cool cool phải ko nào

    mình sẽ giải thích đoạn này nha, viết lại 1 cách đơn giản, bỏ qua cái thân để các bạn có thể nhìn thấy cái cấu trúc
    PHP Code:
    for_each(v.begin(), v.end(), [giatri] (int n)->bool { ....code của hàm nằm trong đây  }); 
    tạm hiểu ở đây ta định nghĩa 1 hàm tại chỗ luôn (gần gần như inline),

    (int n)->bool
    // xem lại III nhé
    đây là 1 hàm ko có tên, được định nghĩa luôn tại chỗ gọi, danh sách tham số là (int n) có kiểu dữ liệu trả về là bool


    [giatri]
    + đây là bắt đầu của 1 biểu thức lambda gọi là introducer
    introducer là [...]
    introducer có thể là rỗng, ví dụ
    PHP Code:
    [] (int x,int y)->int 

    + trong cặp đóng mở ngoặc này nói lên các tham chiếu ngoài (external references) nếu có
    ví dụ
    PHP Code:
        int a,b;
    for_each(v.begin(), v.end(), [a,b] (int n)->bool {return false;}); 

    + ở đây, a,b ta viết như này thì a,b sẽ là 2 tham số, 2 hằng số tham gia vào hàm này, ko thể được, tuyệt đối ko thể thay đổi được giá trị của a,b trong hàm này
    ví dụ đoạn code sau sẽ báo lỗi ngay lập tức và koc ho biên dịch
    PHP Code:
     [a,b] (int n)->bool {a++;return false;} 

    + ta hoàn toàn có thể truyền a,b vào như là tham chiếu vào trong hàm này bằng cách sau
    PHP Code:
    #include <algorithm>
    #include <iostream>
    #include <vector>
    using namespace std;

    void main()
    {
        
    vector<intv;
        for (
    int i 020; ++i)
        {
            
    v.push_back(i);
        }
        
    int a=0,b=0;
        
    for_each(v.begin(), v.end(), [&a,b] (int n)->bool {a++;return false;});
        
    cout<<a;
        
    system("pause");

    thêm 1 ví dụ nữa về biểu thứ lambda cũng rất dễ hiểu
    PHP Code:
    #include <algorithm>
    #include <iostream>
    #include <vector>
    using namespace std;

    void main()
    {
        
    char s[100]="Chao Ca Nha To La Bui Tan Quang - Lang Man - Cong Dong C Viet";

        
    int dem 0
        
    for_each(ss+sizeof(s), [&dem] (char c) {     
            if (
    isupper(c))
                
    dem++;
        });
        
    cout<<"Trong chuoi s co "<<dem<<" ki tu hoa"<<endl;
        
    system("pause");


    Ví dụ nữa : gọi biểu thử lambda
    PHP Code:
    #include <iostream>

    int main()
    {
       
    using namespace std;
       
    int n = [] (int xint y) { return y; }(54);
       
    cout << << endl;



    >>>>>>

    1. lambda-introducer
    2. lambda-parameter-declaration-list
    3. mutable-specification
    4. exception-specification
    5. lambda-return-type-clause
    6. compound-statement


    chap tiếp theo sẽ mà lập trình đa luồng trong C++0x
    (Còn nữa - hãy thx nếu bài viết thật sự có ý nghĩa với bạn)
    Attached Thumbnails Attached Thumbnails IC251606.png  
    Đã được chỉnh sửa lần cuối bởi langman : 20-12-2010 lúc 03:58 PM.
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  2. #2
    Ngày gia nhập
    03 2009
    Bài viết
    523

    ko có nút thanks nhỉ? thanks

  3. #3
    Ngày gia nhập
    05 2008
    Bài viết
    224

    cảm ơn lãng mạn đã chia sẻ với mọi người. Những bài viết ý nghĩa như thế này làm cafe càng cảm thấy khâm phục lãng mạn ^^ . Chắc chắn có rất nhiều bạn đã học đc nhiều từ bài viết này.Vì thế lãng mạn hãy cố lên nhé
    Em có thấy nắng vàng kỷ niệm
    Hạ ngồi ru thanh thản những môi cười
    Thuở ngồi ngóng tay choàng tay nỗi nhớ
    Vin tay vào tháng năm chơi vơi...

  4. #4
    Ngày gia nhập
    04 2010
    Nơi ở
    Thâm sơn cùng cốc
    Bài viết
    825

    Ha ha . Langman có người cảm rồi

  5. #5
    Ngày gia nhập
    10 2009
    Nơi ở
    Close All
    Bài viết
    993

    Wow hay quá .Bài rất có ý nghĩa,tớ mất nét chắc cả tháng nay sẽ không online thường xuyên đc.
    Nên không theo dõi từng pót đc.mONG CẬU cố tiếp tục chia sẻ cho mọi người.hihi
    Cái C# 4.0 làm tớ phê quá,C++OX này từ từ sẽ coi.

  6. #6
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Mặc định Bắt đầu tự học C++0x với Cộng Đồng C Việt

    Update về biểu thức lambda
    ai cảm thấy hay thì để lại lời reply nhé
    Đã được chỉnh sửa lần cuối bởi langman : 08-10-2010 lúc 05:56 PM.
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  7. #7
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Chap 2 : mở rộng và nâng cao
    1. gọi biểu thử lambda
    PHP Code:
    #include <iostream>

    int main()
    {
       
    using namespace std;
       
    int n = [] (int xint y) { return y; }(54);
       
    cout << << endl;

    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  8. #8
    Ngày gia nhập
    08 2008
    Nơi ở
    ha noi
    Bài viết
    79

    đệ thích nhất phần kiểm tra định dạnh email :-bd
    u never know

  9. #9
    Ngày gia nhập
    09 2008
    Nơi ở
    Bắc Ninh
    Bài viết
    2

    Mặc định thắc mắc

    xin lỗi, mình tham gia diễn đàn đã lâu, nhưng mình chỉ học C, nay chuyển sang C++, hiện tại mình đang dùng Borland C++ ver: 3.1. Mình thấy các bài viết ở đây sử dụng thư viện hơi "lạ", không biết mình học c++ thì dùng phần mềm trên có hợp, không, nếu không các bạn chỉ giúp mình xem các bạn đang dùng phần mềm nào để viết C++ vậy, mình cũng đã search google rồi nhưng nhiều kết quả quá, không biết thế nào cả, các bạn đi trước có kinh nghiệm, có thể chỉ giúp mình được không. Xin lỗi nếu cấu hỏi hơi "chuối" nhưng thật sự không biết bắt đầu thế nào và hỏi ở đâu hết. Rất mong sự giúp đỡ.!

  10. #10
    Ngày gia nhập
    11 2010
    Bài viết
    1

    Trích dẫn Nguyên bản được gửi bởi langman Xem bài viết
    ..
    tren ca tuyet voi!
    thanks!
    Đã được chỉnh sửa lần cuối bởi langman : 09-11-2010 lúc 04:19 AM. Lý do: loại bỏ nội dung thẻ QUOTE

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn