c++ back_insert 使用错误,

标签 c++ function

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector<int> square_vec(const vector<int>& v)
{
    vector<int> result;
    result.reserve(v.size());
    back_insert_iterator< std::vector<int>> back_it (result);
    transform(v.begin(), v.end(), back_it, [](int i)  
            {   
                return i*i;
            }); 
    return result;
}

int main() {
    vector<int> my_vec = {1 ,2,3,4,5,6,7,8,9,10};
    vector<int> result_vec;
    result_vec = square_vec(my_vec);
    return 0;
}

我遇到了这样的错误,尝试了不同的方法。还没有工作。 请帮忙。谢谢!

test_transform.cpp: In function ‘std::vector<int, std::allocator<int> > square_vec(const std::vector<int, std::allocator<int> >&)’:
test_transform.cpp:10: error: expected primary-expression before ‘[’ token
test_transform.cpp:10: error: expected primary-expression before ‘]’ token
test_transform.cpp:10: error: expected primary-expression before ‘int’

我的 g++ 是 4.4.7-4 然后我尝试了 4.8.1 它有效。 谢谢大家。

最佳答案

应要求,回答题目:

您的编译器不支持 Lambda 表达式。您看到的错误以第 10 行的方括号 [] 开头。(@Daniel)

尝试更改您的编译器以查看是否有帮助 - 您的编译器必须支持 C++11。

关于c++ back_insert 使用错误,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23014777/

相关文章:

c++ - 不同的普通可复制类型之间的 std::memcpy 是未定义的行为吗?

c++ - 精神提升: Invalidate parser from member function

python - 如何在 Python 中重新加载函数?

Javascript Onclick 问题

javascript - 嵌套内容的递归 JavaScript 函数过早生成结束标记

sql-server - 用户定义函数和存储过程之间的性能差异

c++ - 将 std::string 编码/解码为 UTF-16

c++ - 需要有关 C++ v11 类模板中类型约束设计的建议

javascript - Controller 中定义的函数(javascript)与scope.function( Angular 函数)的区别

c++ - 简单计数器程序 C++ 中的错误 C2228