- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
并行 STL 算法是否符合 std::back_insert_iterator
??
我可能误解了 std::par
和 std::par_vec
之间的区别,std::par_vec
是否意味着输出范围是否需要预先分配?
代码示例:
auto numbers = {1,2,3,4,5,6};
auto squared = std::vector<int>{};
std::transform(
**std::par/std::par_vec,**
numbers.begin(),
numbers.end(),
std::back_inserter(squared),
[](auto val) {
return val*val;
}
);
更新
简化问题,因为我的第一个问题是误读了一篇文章。
最佳答案
Are parallel STL algorithms compliant with a std::back_insert_iterator??
N4659指定 (28.6.4) 如下。
std::transform
的较旧的预执行策略重载使用输入迭代器和输出迭代器。
template<class InputIterator, class OutputIterator, class UnaryOperation>
OutputIterator transform(InputIterator first, InputIterator last,
OutputIterator result, UnaryOperation op);
较新的重载,使用执行策略,使用前向迭代器:
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2, class UnaryOperation>
ForwardIterator2 transform(ExecutionPolicy&& exec,
ForwardIterator1 first, ForwardIterator1 last,
ForwardIterator2 result, UnaryOperation op);
所以看起来你不能将 back_insert_iterator
与新的重载一起使用,因为它不符合 forward iterators概念要求。
does std::par_vec mean that the output range is required to be pre-allocated?
std::par_vec
指的是 vectorization vs. parallelization 意义上的矢量化.它指定两者都可以使用。
关于c++ - 并行 STL 是否处理插入迭代器,例如 std::back_insert_iterator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44788310/
我有一个看起来像这样的代码: struct Data { int value; }; class A { public: typedef std::deque > TList; std
我有点想实现一种复制运算符。目标是有两个类:一个浏览容器,一个用它做一些事情。 Browse 类还在输出容器上维护(出于某种原因)一个迭代器,另一个迭代器可以用它计算增量。 不幸的是,编译器似乎无法将
我想通过迭代器的相应值填充一个容器到另一个容器的元素(经常发生现实生活中的问题),比如: std::container1 c1{/* initialized */}; assert(!c1.empty
我现在正在学习 C++ STL 迭代器,这里有一段代码教 back_insert_iterator : int main(int argc, const char * argv[]) { vector
我想派生自 std::back_insert_iterator为字符串类型创建一种过滤器,比如 back_xml_insert_iterator ,它将检查通过它传递的字符,寻找不能“裸”到 XML
我正在尝试使用 vector 将 back_insert_iterator 与 remove_copy_if 结合使用,但我遇到了编译错误。 你知道下面的代码为什么不对吗? #include #in
如果随机访问迭代器可用于访问相对于它们指向的元素的任意偏移位置的元素(有点像指针),为什么它们不能用于像 std::copy() 这样的通用算法 而不是使用 back_insert_iterator,
我正在尝试开始使用 C++,应该实现以下功能: std::istream& readResults(std::istream& is, std::back_insert_iterator> inser
我正在尝试连接 back_inserter_iterator 和 cin,我知道我可以将复制与 cin 和 back_inserter 一起使用,但想知道为什么我不能执行以下操作 list name;
std::back_insert_iterator 的 value_type 等于 void,但它还有一个 protected 成员 container 包含指向底层 Container 的指针。我正
如图here std::back_insert_iterator 在 C++17 之前继承自 std::iterator 而在 C++17 中则不是。这种变化的原因是什么? 最佳答案 std::ite
int main() { std::deque mydeque; std::back_insert_iterator myback_insert_iterator(mydeque);
并行 STL 算法是否符合 std::back_insert_iterator?? 我可能误解了 std::par 和 std::par_vec 之间的区别,std::par_vec 是否意味着输出范
根据标题问题。 我假设答案是“否,因为 std::back_insert_iterator 对象在容器上调用 push_back()。” 如果答案实际上是否定的,那么我可以在我的模板函数中使用任何模板
在我的项目中,我想将流拆分为一些给定类型的值,所以我实现了一个模板函数 template TOutputIter SplitSpace(std::istream& IS, TOutputIter r
我是一名优秀的程序员,十分优秀!