【发布时间】:2022-01-15 18:56:44
【问题描述】:
最近,我遇到了像这样打印vector 的代码
std::copy(vec.begin(), vec.end(), std::ostream_iterator<T>(std::cout, " ");
与我习惯的比较(for_each 或基于范围的 for 循环)
auto print = [](const auto & element){std::cout << element << " ";};
std::for_each(vec.begin(), vec.end(), print);
-
copy方法是否会创建额外的副本?在for_each我可以有一个 const 引用。 -
copy的文档声明它将元素从一个范围复制到另一个范围。std::ostream_iterator<T>范围如何?如果是,那么它从哪里开始和结束? - 我需要模板化
copy方法,而for_each我可以只auto,这似乎更方便。
这让我觉得for_each 方法更好?
【问题讨论】:
标签: c++ vector foreach copy ostream