小编soh*_*ifi的帖子

在 C++ 中使用 lambda 和 back_inserter 生成 generate_n

我最近开始使用新的 C++11 特性,如 lambda 表达式,以使我的代码更易于阅读。

在这个例子中,我想生成一个随机排序的数字 [0 到 n] 的向量。我有一些类似于以下的代码

    #include <vector>
    #include <algorithm>
    #include <iterator>
    using namespace std;
    void _generateRandomIndices(vector<unsigned int> & indices,
                const unsigned int & n) {
        indices.clear();
        unsigned int i = 0;
        generate_n(back_inserter(indices), n , [&i] ()-> unsigned int{ 
                                                              return i++;
                                                                     } );
        random_shuffle(indices.begin(), indices.end());
    } 
Run Code Online (Sandbox Code Playgroud)

但是,在 Windows 上使用 g++ 4.6(带有 -std=c++0x 标志)向我抛出以下错误:

no matching function for call to 'generate_n(std::back_insert_iterator<std::vector<unsigned int> >, const unsigned int&, _generateRandomIndices(std::vector<unsigned int>&, const unsigned int&)::<lambda()>)'
Run Code Online (Sandbox Code Playgroud)

在这种情况下使用 lambda 表达式的正确方法是什么?

c++ lambda c++11

5
推荐指数
1
解决办法
3482
查看次数

市集忽略文件

什么是相当于.hgignore在善变的文件集市

bazaar

4
推荐指数
2
解决办法
3078
查看次数

标签 统计

bazaar ×1

c++ ×1

c++11 ×1

lambda ×1