0

我使用带有 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<>{});           
}
4

0 回答 0