问题标签 [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 投票
8 回答
1610 浏览

c++ - 如何使用 std::copy 读取任意数量的值?

我正在尝试编写与此相反的操作:

它应该是这样的:

但是我坚持使用“结束”迭代器——输入插入器不能使用 std::advance ,我也不能使用具有相同源的两个流......

有什么优雅的方法可以解决这个问题吗?当然我可以使用 for 循环,但也许有更好的东西:)

0 投票
2 回答
529 浏览

c++ - 在 STL 集上使用静态与成员查找方法?

我正在使用集合,因为我想使用已排序容器(例如集合)的快速查找属性。我想知道是否必须使用 find 成员方法来获得排序容器的好处,还是我也可以在 STL 算法中使用静态 find 方法?

我的预感是使用静态版本将使用线性搜索而不是我想要的二进制搜索。

0 投票
2 回答
5919 浏览

c++ - 使用带有 STL 算法的本地类

我一直想知道为什么不能使用本地定义的类作为 STL 算法的谓词。

在问题中:接近 STL 算法、lambda、本地类和其他方法,BubbaT 提到说“由于 C++ 标准禁止将本地类型用作参数

示例代码:

有谁知道标准中的限制在哪里?禁止本地类型的理由是什么?


编辑:从 C++11 开始,使用本地类型作为模板参数是合法的。

0 投票
2 回答
1901 浏览

c++ - 为什么 std queue 没有定义交换方法专业化

我读过所有 stl 容器都提供了交换算法的专门化,以避免调用默认方法使用的复制构造函数和两个赋值操作。但是,当我认为在我正在处理的某些代码中使用队列会很好时,我注意到(与向量和双端队列不同)队列不提供这种方法?我刚刚决定使用双端队列而不是队列,但我仍然很想知道这是为什么?

0 投票
5 回答
23911 浏览

c++ - STL 向量 reserve() 和 copy()

问候,

我正在尝试使用以下 2 行缩写的代码(完整的测试应用程序如下)执行从一个向量(vec1)到另一个向量(vec2)的复制:

虽然对 vec2 的调用设置了向量 vec2 的容量,但将数据复制到 vec2 似乎并未填充从 vec1 到 vec2 的值。

将 copy() 函数替换为对 push_back() 的调用按预期工作。

我在这里想念什么?

谢谢你的帮助。vectest.cpp 测试程序,然后是结果输出。

编译器:cygwin 上的 gcc 3.4.4。

纳特


输出:

0 投票
6 回答
11759 浏览

c++ - 使用 for_each 对向量中每个元素的平方和

由于for_each接受的函数只接受一个参数(向量的元素),我必须在static int sum = 0 某处定义一个,以便在调用 for_each 后可以访问它。我觉得这很尴尬。有没有更好的方法来做到这一点(仍然使用 for_each)?

在 Ruby 中,我们可以这样做:

您能否展示更多示例for_each在实际编程中通常如何使用(不仅仅是打印出每个元素)?是否可以在 Ruby 中使用for_each模拟“编程模式”,如 map 和注入(或 Haskell 中的 map /fold)。

编辑:谢谢大家。我从你的回复中学到了很多。我们有很多方法可以在 C++ 中做同样的事情,这使得学习有点困难。但这很有趣:)

0 投票
4 回答
2161 浏览

c++ - 使用 for_each 和 bind 反转向量中的字符串

我在徘徊,如何在一个“简单”行中使用单个命令来反转string包含在 a 中的 s 。vectorfor_each

是的,我知道使用自定义函子很容易,但我不能接受,它不能用它来完成bind(至少我做不到)。

编辑: 非常感谢那些有趣的解决方案。但是,我的解决方案是不使用Visual Studio 2008 功能包/SP1 附带的tr1::bind 。我不知道为什么它不像预期的那样工作,但事实就是这样(甚至 MS 也承认它有问题)。也许一些修补程序会有所帮助。

使用 boost::bind 一切都按预期工作,而且非常简单(但有时会很乱:))。我真的应该首先尝试 boost::bind ......

0 投票
2 回答
955 浏览

c++ - 如何在模板中使用 std::transform

我正在努力找出为什么我无法使用模板类进行转换。

这是模板类的简化版本:

这就是我尝试使用 transform 来捕获 add 成员函数的所有 bool 输出的地方:

目的是使用 base::add 或 base::addTo 插入 toAdd 容器的每个成员,并在向量结果中捕获 bool 结果

0 投票
3 回答
466 浏览

c++ - c++ STL 算法和容器跨平台和性能是否相同?

在学习了大量的 c++ 之后,我现在进入了 STL 容器和算法模板库,我主要关心的是,

1) 这个库在 MS、linux 和其他操作系统等不同平台上是否相同?

2) 程序 c++ 模块的质量或效率会随着 STL 容器和算法的更多使用而降低,我认为我无法根据所有需求对其进行自定义。

3)这个模板库好用在linux系统编程,内核模块中吗?

4)最后我可以在编程比赛中使用它,因为它可以减轻很多编码和压力。

0 投票
4 回答
2743 浏览

c++ - C ++查找方法不是const吗?

我写了一个我想声明为 const 的方法,但是编译器抱怨。我查了一下,发现这部分方法造成了困难:

该方法中发生的事情比这更多,但是在剥离了其他所有内容后,这是不允许该方法为 const 的部分。为什么 stl find 算法会阻止方法为 const?它会以任何方式更改列表吗?