#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/