问题标签 [stl-algorithm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
711 浏览

c++ - 为什么 std::max_element 需要 ForwardIterator?

C++ 标准库的max_element算法需要将迭代器作为输入传递给 model ForwardIterator

我的理解是,通过指定您可以使用 a在同一范围内多次迭代来进行ForwardIterator细化。因此,多遍算法需要s。InputIteratorForwardIteratorForwardIterator

但是,max_element它不是多遍算法 - 在一个范围内迭代一次以确定其最大元素就足够了。那么为什么max_element需要额外的能力ForwardIterator呢?

0 投票
1 回答
2307 浏览

c++ - 为什么 std::count(_if) 返回 iterator::difference_type 而不是 size_t?

可能重复:
为什么 C++ 标准算法“count”返回 ptrdiff_t 而不是 size_t?

标准 C++ 中有算法std::count/ std::count_if

效果:返回 [first,last) 范围内满足以下相应条件的迭代器 i 的数量:*i == value, pred(*i) != false。

difference_typeis iterator's difference_type,它可以是负数,但count只能返回值 >= 0。为什么difference_type而不是size_t例如?

0 投票
1 回答
125 浏览

c++ - 将 remove_copy_if 与 ostream_iterator 一起使用时确定复制范围的结尾

我正在尝试使用remove_copy_if直接复制iterablestdout通过ostream_iteratorremove_copy_if保证return value是到输出范围的iterator末尾。通过找出输出迭代器的起点和返回迭代器之间的距离,此返回值在确定复制到目标的元素数量方面很有用。这在使用容器时是有意义的,但是如何使用相同的功能来确定复制到目标的元素数量(如果它是ostream_iterator.

以下示例对我可能想要实现的目标应该更有意义

0 投票
1 回答
1717 浏览

string - 使用 STL 就地反转字符串的单词

这个问题已经在 SO:. 这是我使用反转字符串然后反转单词的传统算法的 STL 函数的版本。有没有更优雅的解决方案而不使用循环?

假设输入是完美的,句子前后没有空格,单词之间只有一个空格。是否有不需要循环的 stl 解决方案?

最好的,Subramanian

0 投票
1 回答
1073 浏览

c++ - c++ sort 不使用自定义函数

我正在尝试排序

我正在尝试std::sort从算法标题中使用

我打电话给它

这是我的排序功能:

排序的目的是然后调用 std::unique 以获得具有唯一值的向量。当我在 cygwin 中使用 gcc 进行编译时,我没有收到任何错误,但我有重复,当我使用 Visual Studio 2010 进行编译时,我收到一个错误,即 operator< 未定义。我一步一步地尝试使用它自己的排序功能,而不是我定义的那个。

我不确定如何解决这个问题,有什么建议吗?

其他细节:保证所有向量的大小相同。它的目的是字符串原始向量的每个排列的向量。每个字符串都是一个命令,我正在寻找可以改变这些命令的所有不同方式。所以我需要去除重复项。

0 投票
2 回答
67 浏览

c++ - 检查向量中的一组值

我有一组数字:

我想检查这些数字中是否有任何数字在我的向量中:

我知道我可以使用算法的 std::find 单独检查每个:

在这个例子中,只有三个数字,但真正的数字集会更大。此外,这似乎有点乏味。有更好的解决方案吗?

0 投票
5 回答
99840 浏览

c++ - 如何找到两个 STL 集的交集?

我一直试图在 C++ 中找到两个 std::set 之间的交集,但我一直收到错误消息。

我为此创建了一个小样本测试

后一个程序不会生成任何输出,但我希望有一个s3具有以下值的新集合(我们称之为它):

相反,我收到了错误:

我从这个错误中理解的是,没有set_intersection接受Rb_tree_const_iterator<int>作为参数的定义。

此外,我想该std::set.begin()方法返回这种类型的对象,

std::set有没有更好的方法在 C++中找到两者的交集?最好是内置函数?

0 投票
2 回答
147 浏览

c++ - 需要:用于维护一维范围列表的 C++ 类

我正在寻找一个可以维护一维范围列表的 C++ 类。

每个范围定义为一(start,len)对。

我希望能够向列表中添加其他范围并自动合并它们。也就是说,如果我们在列表中有(0,5)and并且被添加,那么新列表应该只包含.(10,5)(5,5)(0,15)

范围永远不会从列表中删除。

这样的事情存在吗?

谢谢。

0 投票
7 回答
2135 浏览

c++ - STL 算法:为什么没有额外的容器接口(除了迭代器对)?

我想知道为什么 STL 不会重载它们的算法函数,这样我就可以通过简单地提供一个容器而不是采用更冗长的方式来传递 begin + end 迭代器来调用它们。我当然理解为什么我们还想使用迭代器对来处理容器/数组的子序列,但是,几乎所有对这些方法的调用都使用了整个容器:

我会发现只写更方便,可读性和可维护性

STL 不提供这些重载是否有原因?[编辑:我不是要用这个受限制的接口替换接口,而是要提供一个基于容器的 iterface!] 他们会引入歧义吗?我正在考虑这样的事情:

我错过了什么吗?

0 投票
1 回答
1813 浏览

c++ - c ++如何搜索向量中的结构元素是否相等?

一个名为的类有一个s 结构SparseMatrix的向量。Node我想重载+=运算符,以便如果 Node 实例的ij成员相同,则该节点的值将添加到This. 我如何使用算法库中的方法来实现这一点?

我尝试使用find_if传递给一个函数,但它只作用于一个迭代器:

基本上,我希望 Node::samePosition() 传递两个参数——传递的当前迭代器find_ifitOther因此它可以检查它们是否相等。

编辑:我已经分离了samePosition函数,现在想使用两个参数传递给它find_if