我使用带有 g++9.1 的 Ubuntu 19.01 来测试来自 c++17 的并行新算法。
我已经成功地使用算法 std::sort 和 std::reduce 进行了测试。
要编译我使用:
g++-9.1 -std=c++17 -Wall -Wextra -pedantic t0.cpp -o t0 -ltbb
当我尝试编译代码时,它总是出现这个错误:
erro: no matching function for call to ‘exclusive_scan(std::vector<int, std::allocator<int> >::iterator, std::vector<int, std::allocator<int> >::iterator, std::ostream_iterator<int>, int)’
可能是什么?
#include <functional>
#include <iostream>
#include <iterator>
#include <numeric>
#include <vector>
#include <algorithm>
int main()
{
std::vector data {3, 1, 4, 1, 5, 9, 2, 6};
std::cout << "exclusive sum: ";
std::exclusive_scan(data.begin(), data.end(),
std::ostream_iterator<int>(std::cout, " "),
0);
std::cout << "\ninclusive sum: ";
std::inclusive_scan(data.begin(), data.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << "\n\nexclusive product: ";
std::exclusive_scan(data.begin(), data.end(),
std::ostream_iterator<int>(std::cout, " "),
1, std::multiplies<>{});
std::cout << "\ninclusive product: ";
std::inclusive_scan(data.begin(), data.end(),
std::ostream_iterator<int>(std::cout, " "),
std::multiplies<>{});
}