存档

  • c++11 之变长参数模板

    C++ 中可以对函数重载,即同样的函数名字(其实在编译期还是会被生成不同的名字)可以有不同的参数列表,例如 STL 中 string 的构造函数:

    string();
    string (const string& str);
    string (const string& str, size_t pos, size_t len = npos);
    string (const char* s);
    string (const char* s, size_t n);
    ...
    

    看上去和 C 中的变长参数有点类似:

    void func(int nil, ...);
    

    有点不同的是,C …

    阅读全文…

    2015年4月5日 | 归档: c++1x | 标签:
  • C++11 中的 lambda 函数

    c++ 标准库里有一个函数 sort(),可以对容器的元素进行排序。它的函数原型是(参考资料 [1]):

    template <class RandomAccessIterator>
    void sort (RandomAccessIterator first, RandomAccessIterator last);
    
    template <class RandomAccessIterator, class Compare>
    void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
    

    其中第三个参数是一个比较函数,它接收两个容器中的两个元素,返回比较结果。如果没有第三个参数,默认按元素的升序排列。

    例如,我们要将一个整型数组降序排列:

    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    static bool compare_int(int 

    阅读全文…

    2013年9月9日 | 归档: c++1x | 标签: ,
文章标签 ‘c++1x’