15得票1回答
fill_n和fill是同一函数,只是具有不同的参数重载吗?

我正在研究 <algorithm> 的 fill 和 fill_n 函数,它们似乎做的事情差不多,只是定义不同。 这是真的吗?如果不是,它们有什么不同? 它们的描述方式似乎相同(我从 MSDN 上阅读了 fill_n 和 fill 的说明)。 如果它们是一样的,那么拥有这两个...

15得票7回答
寻找集合并集的最快方法

我有一组由整数对组成的集合,例如 set<pair<int,int> > x1, x2, ... xn (其中 n 可以在 2 到 20 之间)。最快的方法是找到这些集合的并集? 抱歉如果一开始没有表述清楚,我指的是性能上的快速度,内存分配不是问题。

13得票4回答
std::ostream_iterator 防止最后一个项目使用分隔符

有没有一种方法可以使用std::ostream_iterator(或类似的东西),使得最后一个元素不放置分隔符?#include <iterator> #include <vector> #include <algorithm> #include <s...

13得票3回答
std::is_sorted和严格小于比较?

我对std::is_sorted算法及其默认行为不是很了解。如果我们查看cppreference,它说默认情况下std::is_sorted使用<运算符。相反,我认为使用<=会更加自然。但我的问题是对于以下数字列表:1 2 3 3 4 5 即使3 < 3应该是false,但它...

13得票1回答
为什么std::max_element需要ForwardIterator?

C++标准库的max_element算法要求作为输入的迭代器需要符合ForwardIterator的模型。 我的理解是,ForwardIterator通过指定你可以使用ForwardIterator多次迭代同一范围来细化InputIterator。因此,多遍算法需要ForwardIterat...

13得票3回答
在并行算法中使用ranges::view::iota

由于c++17中没有基于索引的并行for算法,我想知道是否可以使用ranges::view::iota与std::for_each结合使用来模拟它。即: using namespace std; constexpr int N= 10'000'000; ranges::iota_view ...

12得票2回答
为什么std::find_if(first, last, p)不采用引用传递谓词?

我正在查看 cppreference.com 上关于 std::find_if 的各种签名,我注意到采用谓词函数的版本似乎是按值接受它:template< class InputIt, class UnaryPredicate > InputIt find_if( InputIt ...

12得票3回答
在一个二维的std::array上使用std::accumulate

给定一个二维数组std::array<std::array<int, 2>, 3> m = {{ {1, 2}, {3, 4}, {5, 6} }}; 我正在寻找其所有元素的总和 - 在这种情况下是21。如果该数组是一维的,我可以写出以下代码: auto sum =...

12得票2回答
为什么std :: copy_if签名不限制谓词类型

想象一下我们有以下情况: struct A { int i; }; struct B { A a; int other_things; }; bool predicate( const A& a) { return a.i > 123; } ...

12得票6回答
使用for_each计算向量中每个元素的平方和

由于被 for_each 接受的函数仅接受一个参数(向量的元素),因此我必须在某个地方定义一个 static int sum = 0,以便在调用 for_each 后可以访问它。 我认为这很笨拙。 还有更好的方法吗?(仍然使用 for_each)?#include <algorithm&...