问题标签 [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.
c++ - 为什么 std::max_element 需要 ForwardIterator?
C++ 标准库的max_element
算法需要将迭代器作为输入传递给 model ForwardIterator
。
我的理解是,通过指定您可以使用 a在同一范围内多次迭代来进行ForwardIterator
细化。因此,多遍算法需要s。InputIterator
ForwardIterator
ForwardIterator
但是,max_element
它不是多遍算法 - 在一个范围内迭代一次以确定其最大元素就足够了。那么为什么max_element
需要额外的能力ForwardIterator
呢?
c++ - 为什么 std::count(_if) 返回 iterator::difference_type 而不是 size_t?
标准 C++ 中有算法std::count
/ std::count_if
。
效果:返回 [first,last) 范围内满足以下相应条件的迭代器 i 的数量:*i == value, pred(*i) != false。
difference_type
is iterator's difference_type
,它可以是负数,但count
只能返回值 >= 0。为什么difference_type
而不是size_t
例如?
c++ - 将 remove_copy_if 与 ostream_iterator 一起使用时确定复制范围的结尾
我正在尝试使用remove_copy_if直接复制iterable
到stdout
通过ostream_iterator。remove_copy_if
保证return value
是到输出范围的iterator
末尾。通过找出输出迭代器的起点和返回迭代器之间的距离,此返回值在确定复制到目标的元素数量方面很有用。这在使用容器时是有意义的,但是如何使用相同的功能来确定复制到目标的元素数量(如果它是ostream_iterator
.
以下示例对我可能想要实现的目标应该更有意义
string - 使用 STL 就地反转字符串的单词
这个问题已经在 SO:. 这是我使用反转字符串然后反转单词的传统算法的 STL 函数的版本。有没有更优雅的解决方案而不使用循环?
假设输入是完美的,句子前后没有空格,单词之间只有一个空格。是否有不需要循环的 stl 解决方案?
最好的,Subramanian
c++ - c++ sort 不使用自定义函数
我正在尝试排序
我正在尝试std::sort
从算法标题中使用
我打电话给它
这是我的排序功能:
排序的目的是然后调用 std::unique 以获得具有唯一值的向量。当我在 cygwin 中使用 gcc 进行编译时,我没有收到任何错误,但我有重复,当我使用 Visual Studio 2010 进行编译时,我收到一个错误,即 operator< 未定义。我一步一步地尝试使用它自己的排序功能,而不是我定义的那个。
我不确定如何解决这个问题,有什么建议吗?
其他细节:保证所有向量的大小相同。它的目的是字符串原始向量的每个排列的向量。每个字符串都是一个命令,我正在寻找可以改变这些命令的所有不同方式。所以我需要去除重复项。
c++ - 检查向量中的一组值
我有一组数字:
我想检查这些数字中是否有任何数字在我的向量中:
我知道我可以使用算法的 std::find 单独检查每个:
在这个例子中,只有三个数字,但真正的数字集会更大。此外,这似乎有点乏味。有更好的解决方案吗?
c++ - 如何找到两个 STL 集的交集?
我一直试图在 C++ 中找到两个 std::set 之间的交集,但我一直收到错误消息。
我为此创建了一个小样本测试
后一个程序不会生成任何输出,但我希望有一个s3
具有以下值的新集合(我们称之为它):
相反,我收到了错误:
我从这个错误中理解的是,没有set_intersection
接受Rb_tree_const_iterator<int>
作为参数的定义。
此外,我想该std::set.begin()
方法返回这种类型的对象,
std::set
有没有更好的方法在 C++中找到两者的交集?最好是内置函数?
c++ - 需要:用于维护一维范围列表的 C++ 类
我正在寻找一个可以维护一维范围列表的 C++ 类。
每个范围定义为一(start,len)
对。
我希望能够向列表中添加其他范围并自动合并它们。也就是说,如果我们在列表中有(0,5)
and并且被添加,那么新列表应该只包含.(10,5)
(5,5)
(0,15)
范围永远不会从列表中删除。
这样的事情存在吗?
谢谢。
c++ - STL 算法:为什么没有额外的容器接口(除了迭代器对)?
我想知道为什么 STL 不会重载它们的算法函数,这样我就可以通过简单地提供一个容器而不是采用更冗长的方式来传递 begin + end 迭代器来调用它们。我当然理解为什么我们还想使用迭代器对来处理容器/数组的子序列,但是,几乎所有对这些方法的调用都使用了整个容器:
我会发现只写更方便,可读性和可维护性
STL 不提供这些重载是否有原因?[编辑:我不是要用这个受限制的接口替换接口,而是要提供一个基于容器的 iterface!] 他们会引入歧义吗?我正在考虑这样的事情:
我错过了什么吗?
c++ - c ++如何搜索向量中的结构元素是否相等?
一个名为的类有一个s 结构SparseMatrix
的向量。Node
我想重载+=
运算符,以便如果 Node 实例的i
和j
成员相同,则该节点的值将添加到This
. 我如何使用算法库中的方法来实现这一点?
我尝试使用find_if
传递给一个函数,但它只作用于一个迭代器:
基本上,我希望 Node::samePosition() 传递两个参数——传递的当前迭代器find_if
,itOther
因此它可以检查它们是否相等。
编辑:我已经分离了samePosition
函数,现在想使用两个参数传递给它find_if
: